CopyOnWriteArrayList es una variante segura de subprocesos de ArrayList en la que todas las operaciones mutativas (agregar, establecer, etc.) se implementan haciendo una copia nueva de la matriz subyacente.
CopyOnWriteArrayList es una alternativa concurrente de la lista sincronizada implementa la interfaz List y es parte del paquete java.util.concurrent y es una colección segura para subprocesos.
public class CopyOnWriteArrayList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
CopyOnWriteArrayList es a prueba de fallas y no arroja ConcurrentModificationException cuando CopyOnWriteArrayList subyacente se modifica durante la iteración, use una copia separada de ArrayList.
Esto suele ser demasiado costoso porque la matriz de copia involucra cada operación de actualización, se creará una copia clonada. CopyOnWriteArrayList es la mejor opción solo para operaciones de lectura frecuente.
/**
* Returns a shallow copy of this list. (The elements themselves
* are not copied.)
*
* @return a clone of this list
*/
public Object clone() {
try {
@SuppressWarnings("unchecked")
CopyOnWriteArrayList<E> clone =
(CopyOnWriteArrayList<E>) super.clone();
clone.resetLock();
return clone;
} catch (CloneNotSupportedException e) {
// this shouldn't happen, since we are Cloneable
throw new InternalError();
}
}