282 |
|
CopyOnWriteArrayList<E> clone = |
283 |
|
(CopyOnWriteArrayList<E>) super.clone(); |
284 |
|
clone.resetLock(); |
285 |
+ |
// Unlike in readObject, here we cannot visibility-piggyback on the |
286 |
+ |
// volatile write in setArray(). |
287 |
+ |
VarHandle.releaseFence(); |
288 |
|
return clone; |
289 |
|
} catch (CloneNotSupportedException e) { |
290 |
|
// this shouldn't happen, since we are Cloneable |
1581 |
|
}}); |
1582 |
|
try { |
1583 |
|
lockField.set(this, new Object()); |
1581 |
– |
VarHandle.releaseFence(); |
1584 |
|
} catch (IllegalAccessException e) { |
1585 |
|
throw new Error(e); |
1586 |
|
} |