CopyOnWriteArrayList adalah varian thread-safe dari ArrayList di mana semua operasi mutatif (tambah, set, dan sebagainya) diimplementasikan dengan membuat salinan baru dari array yang mendasarinya.
CopyOnWriteArrayList adalah alternatif berbarengan dari antarmuka Daftar alat yang disinkronkan Daftar yang disinkronkan dan bagiannya dari paket java.util.concurrent dan koleksi yang aman.
public class CopyOnWriteArrayList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
CopyOnWriteArrayList gagal-aman dan tidak membuang ConcurrentModificationException ketika mendasari CopyOnWriteArrayList dimodifikasi selama Iterasi menggunakan salinan ArrayList yang terpisah.
Ini biasanya terlalu mahal karena array salin melibatkan setiap operasi pembaruan salinan kloning akan dibuat. CopyOnWriteArrayList adalah pilihan terbaik hanya untuk operasi baca yang sering.
/**
* 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();
}
}