CopyOnWriteArrayList là một biến thể của ArrayList an toàn theo luồng trong đó tất cả các hoạt động đột biến (thêm, đặt, v.v.) được thực hiện bằng cách tạo một bản sao mới của mảng bên dưới.
CopyOnWriteArrayList là một thay thế đồng thời của giao diện Danh sách được đồng bộ hóa và một phần của gói java.util.conc hiện tại là một bộ sưu tập an toàn luồng.
public class CopyOnWriteArrayList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
CopyOnWriteArrayList không an toàn và không ném ConcurrencyModificationException khi bên dưới CopyOnWriteArrayList được sửa đổi trong Iteration sử dụng một bản sao riêng của ArrayList.
Điều này thường quá tốn kém vì mảng sao chép liên quan đến mọi hoạt động cập nhật, một bản sao được sao chép sẽ được tạo. CopyOnWriteArrayList là lựa chọn tốt nhất chỉ cho hoạt động đọc thường xuyên.
/**
* 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();
}
}