CopyOnWriteArrayList was introduced in Java 5 version. It is a
thread-safe collection. It is similar to an ArrayList.
In CopyOnWriteArrayList, all mutative operations (add, set etc.)
are implemented by making a fresh copy of the underlying array.
Iterator of CopyOnWriteArrayList is guaranteed to not throw
ConcurrentModificationException. But Iterator also does not reflect
any additions, removals that happened to list after the Iterator was
created.
All elements including null are permitted in CopyOnWriteArrayList.