CopyOnWriteArrayList
การดำเนินการเพิ่ม , ตั้งค่า , ลบ ใน คอลเล็กชันที่กำหนดส่งผลให้มีการสร้างสำเนาใหม่ของอาร์เรย์ภายใน สิ่งนี้ทำให้มั่นใจได้ว่า เราจะไม่พบConcurrentModificationException
โปรดจำไว้ว่าเมื่อคัดลอกอาร์เรย์ เฉพาะการอ้างอิงถึงวัตถุเท่านั้นที่จะถูกคัดลอก รวมถึงการเข้าถึงฟิลด์ขององค์ประกอบที่ไม่ปลอดภัยสำหรับเธรด คอลเล็กชันดังกล่าวใช้ดีที่สุดในกรณีที่มีจำนวนการดำเนินการเขียนขั้นต่ำ

CopyOnWriteArrayList<E>เป็นอะนาล็อกที่ปลอดภัยสำหรับเธรดของ ArrayListซึ่งใช้งานบนพื้นฐานของอัลกอริทึม CopyOnWrite วิธีการเพิ่มเติมและคอนสตรัคอธิบายด้านล่าง:
CopyOnWriteArrayList(E[] toCopyIn) | ตัวสร้างที่ใช้อาร์เรย์เป็นอินพุต |
int indexOf(E อี ดัชนี int) | ส่งกลับดัชนีขององค์ประกอบแรกที่พบ โดยเริ่มต้นที่ดัชนีที่กำหนด |
int lastIndexOf(E อี ดัชนี int) | ส่งกลับดัชนีขององค์ประกอบแรกที่พบในการค้นหาแบบย้อนกลับ โดยเริ่มต้นที่ดัชนีที่กำหนด |
บูลีน addIfAbsent(E อี) | เพิ่มองค์ประกอบหากไม่ได้อยู่ในคอลเลกชัน ใช้วิธีเท่ากับ เพื่อเปรียบเทียบ องค์ประกอบ |
int addAllAbsent (คอลเลกชัน <? ขยาย E> c) | เพิ่มองค์ประกอบหากไม่ได้อยู่ในคอลเลกชัน ส่งกลับจำนวนองค์ประกอบที่เพิ่ม |
อินเทอร์เฟซ ConcurrentMap
ปรับปรุงการใช้งานHashMapและTreeMapด้วยการสนับสนุนมัลติเธรดและความสามารถในการปรับขนาด

ConcurrentMap<K, V>เป็นอินเทอร์เฟซที่ขยายแผนที่ด้วยการดำเนินการอะตอมมิกเพิ่มเติม
V putIfAbsent(คีย์ K, ค่า V) | เพิ่มคู่คีย์-ค่าใหม่เฉพาะในกรณีที่คีย์ไม่ได้อยู่ในคอลเล็กชัน ส่งกลับค่าก่อนหน้าสำหรับคีย์ที่กำหนด |
บูลีนลบ (คีย์วัตถุ, ค่าวัตถุ) | ลบคู่คีย์-ค่าเฉพาะเมื่อคีย์ที่กำหนดตรงกับค่าที่กำหนดในแผนที่ คืนค่าจริงหากลบองค์ประกอบสำเร็จ |
บูลีนแทนที่ (คีย์ K, V oldValue, V newValue) | แทนที่ค่าเก่าด้วยค่าใหม่โดยคีย์ก็ต่อเมื่อค่าเก่าตรงกับค่าที่กำหนดในแผนที่เท่านั้น คืนค่าจริงหากค่าถูกแทนที่ด้วยค่าใหม่ |
V แทนที่ (คีย์ K, ค่า V) | แทนที่ค่าเก่าด้วยค่าใหม่ด้วยคีย์เฉพาะเมื่อคีย์เชื่อมโยงกับค่าใดๆ ส่งกลับค่าก่อนหน้าสำหรับคีย์ที่กำหนด |
ConcurrentHashMap<K, V> - ที่นี่ข้อมูลจะถูกนำเสนอในรูปแบบของกลุ่มซึ่งแบ่งออกเป็นคีย์แฮช ดังนั้น ถ้าคุณต้องการเข้าถึง เซ็กเมนต์จะถูกล็อก ไม่ใช่อ็อบเจ็กต์ ตัววนซ้ำไม่โยน ConcurrentModificationExceptionและแสดงข้อมูลในช่วงเวลาหนึ่ง
การใช้งาน ConcurrentHashMap
ConcurrentHashMap<K, V> - ที่นี่ข้อมูลจะถูกนำเสนอในรูปแบบของเซ็กเมนต์ แบ่งตามคีย์แฮช ด้วยเหตุนี้ การเข้าถึงข้อมูลจึงถูกล็อคตามกลุ่ม ไม่ใช่โดยวัตถุเดียว นอกจากนี้ ตัววนซ้ำจะแสดงข้อมูลสำหรับช่วงเวลาหนึ่ง ๆและไม่โยน ConcurrentModificationException
ConcurrentNavigableMap<K,V> - ขยายเท อร์เฟ ซ NavigableMapและส่งคืน ConcurrentNavigableMap ตัววนซ้ำทั้งหมดใช้งานได้อย่างปลอดภัยและห้ามทิ้ง ConcurrentModificationException
ConcurrentSkipListMap<K, V>เป็นอะนาล็อกของ TreeMapสำหรับการทำงานแบบมัลติเธรด ข้อมูลถูกจัดเรียงตามคีย์และประสิทธิภาพการบันทึกเฉลี่ย (N) รับประกันสำหรับcontainerKey,get,put,removeและการดำเนินการอื่นๆ ที่คล้ายกัน
ConcurrentSkipListSet<E>เป็นการใช้งานเท อร์เฟ ซ Setตาม ConcurrentSkipListMap
GO TO FULL VERSION