CopyOnWriteArrayList ArrayList का एक थ्रेड-सुरक्षित वैरिएंट है जिसमें सभी म्यूटेटिव ऑपरेशंस (ऐड, सेट, और इसी तरह) को अंतर्निहित एरे की एक नई कॉपी बनाकर लागू किया जाता है।
CopyOnWriteArrayList सिंक्रोनाइज़्ड लिस्ट इम्प्लीमेंट्स लिस्ट इंटरफेस का एक समवर्ती विकल्प है और इसके java.util.concurrent packageand के थ्रेड-सेफ कलेक्शन का हिस्सा है।
public class CopyOnWriteArrayList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
CopyOnWriteArrayList विफल-सुरक्षित है और जब सम्मिलित नहीं किया जाता है तो समवर्तीModificationException को फेंक नहीं देता है जब अंतर्निहित CopyOnWriteArrayList Iteration के दौरान संशोधित होता है ArrayList की एक अलग प्रति का उपयोग करें।
यह आमतौर पर बहुत महंगा है क्योंकि कॉपी एरे में हर अपडेट ऑपरेशन में एक क्लोन कॉपी बनाई जाएगी। CopyOnWriteArrayList केवल लगातार पढ़े जाने वाले ऑपरेशन के लिए सबसे अच्छा विकल्प है।
/**
* 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();
}
}