A thread-safe variant of
java.util.ArrayList in which all mutative
set, and so on) are implemented by
making a fresh copy of the underlying array.
This is ordinarily too costly, but may be more efficient
than alternatives when traversal operations vastly outnumber
mutations, and is useful when you cannot or don't want to
synchronize traversals, yet need to preclude interference among
concurrent threads. The "snapshot" style iterator method uses a
reference to the state of the array at the point that the iterator
was created. This array never changes during the lifetime of the
iterator, so interference is impossible and the iterator is
guaranteed not to throw
The iterator will not reflect additions, removals, or changes to
the list since the iterator was created. Element-changing
operations on iterators themselves (
add) are not supported. These methods throw
All elements are permitted, including
Memory consistency effects: As with other concurrent
collections, actions in a thread prior to placing an object into a
actions subsequent to the access or removal of that element from
CopyOnWriteArrayList in another thread.
This class is a member of the Java Collections Framework.
|the type of elements held in this collection|