CopyOnWriteArrayList
दिलेल्या संग्रहावरील जोडा , सेट , काढा ऑपरेशन्स परिणामी अंतर्गत अॅरेची नवीन प्रत तयार केली जाते. हे सुनिश्चित करते की आम्ही ConcurrentModificationException पकडत नाही .
फक्त लक्षात ठेवा की अॅरे कॉपी करताना, थ्रेड-सुरक्षित नसलेल्या घटकांच्या फील्डमध्ये प्रवेशासह केवळ ऑब्जेक्ट्सचे संदर्भ कॉपी केले जातात. कमीतकमी लेखन ऑपरेशन्स असलेल्या प्रकरणांमध्ये असे संग्रह सर्वोत्तम वापरले जातात.
![](https://cdn.codegym.cc/images/article/dd30e3f5-509c-479f-acb2-47f72f63b032/512.jpeg)
CopyOnWriteArrayList<E> हे ArrayList चा थ्रेड-सेफ अॅनालॉग आहे, जो CopyOnWrite अल्गोरिदमच्या आधारे लागू केला जातो. अतिरिक्त पद्धती आणि कन्स्ट्रक्टर खाली वर्णन केले आहेत:
CopyOnWriteArrayList(E[] toCopyIn) | एक कन्स्ट्रक्टर जो इनपुट म्हणून अॅरे घेतो. |
int indexOf(E e, int इंडेक्स) | दिलेल्या अनुक्रमणिकेपासून सुरू होणार्या पहिल्या घटकाची अनुक्रमणिका मिळवते. |
int lastIndexOf(E e, int इंडेक्स) | दिलेल्या निर्देशांकापासून सुरू होणार्या, उलट शोधात सापडलेल्या पहिल्या घटकाची अनुक्रमणिका मिळवते. |
बुलियन addIfAbsent(E e) | एखादा घटक संग्रहात नसल्यास जोडा. घटकांची तुलना करण्यासाठी समान पद्धत वापरली जाते . |
int addAllAbsent(संकलन<? विस्तारित E> c) | घटक संग्रहात नसल्यास ते जोडा. जोडलेल्या घटकांची संख्या मिळवते. |
समवर्ती नकाशा इंटरफेस
मल्टीथ्रेडिंग आणि स्केलेबिलिटीसाठी समर्थनासह हॅशमॅप आणि ट्रीमॅपची सुधारित अंमलबजावणी .
![](https://cdn.codegym.cc/images/article/b93ad73c-488f-4c46-91c8-9a76c7337e1a/1024.jpeg)
ConcurrentMap<K, V> हा एक इंटरफेस आहे जो अतिरिक्त अणु ऑपरेशन्ससह नकाशाचा विस्तार करतो .
V putIfAbsent(K की, V मूल्य) | की संग्रहात नसल्यासच नवीन की-मूल्याची जोडी जोडते. दिलेल्या की साठी मागील मूल्य मिळवते. |
बुलियन रिमूव्ह (ऑब्जेक्ट की, ऑब्जेक्ट व्हॅल्यू) | दिलेली की नकाशामधील दिलेल्या मूल्याशी जुळली तरच की-मूल्याची जोडी काढून टाकते. घटक यशस्वीरित्या काढला गेल्यास सत्य मिळवते. |
बुलियन रिप्लेस (के की, व्ही जुने व्हॅल्यू, व्ही नवीन व्हॅल्यू) | जुने मूल्य नकाशामधील दिलेल्या मूल्याशी जुळल्यासच जुन्या मूल्याची किल्ली करून नवीन मूल्य बदलते. मूल्य नवीन सह पुनर्स्थित केले असल्यास खरे मिळवते. |
V बदला(K की, V मूल्य) | की कोणत्याही मूल्याशी संबंधित असेल तरच जुने मूल्य नवीन किल्लीसह पुनर्स्थित करते. दिलेल्या की साठी मागील मूल्य मिळवते. |
ConcurrentHashMap<K, V> - येथे डेटा सेगमेंटच्या स्वरूपात सादर केला जातो, जो की हॅशमध्ये विभागलेला असतो. परिणामी, आपल्याला प्रवेशाची आवश्यकता असल्यास, सेगमेंट लॉक केले आहे, ऑब्जेक्ट नाही. Iterators ConcurrentModificationException फेकत नाहीतआणि विशिष्ट कालावधीसाठी डेटाचे प्रतिनिधित्व करतात.
समवर्ती हॅशमॅपची अंमलबजावणी
ConcurrentHashMap<K, V> - येथे डेटा सेगमेंटच्या स्वरूपात सादर केला जातो, की हॅशद्वारे खंडित केला जातो. परिणामी, डेटा प्रवेश एका ऑब्जेक्टद्वारे नव्हे तर विभागांद्वारे लॉक केला जातो. याव्यतिरिक्त, पुनरावृत्ती विशिष्ट वेळेसाठी डेटाचे प्रतिनिधित्व करतात आणि ConcurrentModificationException टाकत नाहीत .
ConcurrentNavigableMap<K,V> - NavigableMap इंटरफेस वाढवतेआणि ConcurrentNavigableMap परत करते . सर्व पुनरावृत्ती वापरण्यास सुरक्षित आहेत आणि ConcurrentModificationException टाकू नका .
ConcurrentSkipListMap<K, V> हे मल्टीथ्रेडिंगसाठी ट्रीमॅपचे अॅनालॉग आहे. डेटा की द्वारे क्रमवारी लावला जातो आणि containsKey,get,put,remove,आणि इतर तत्सम ऑपरेशन्ससाठी सरासरी लॉग(N) कार्यप्रदर्शन हमी दिले जाते.
ConcurrentSkipListSet<E> हे ConcurrentSkipListMap वर आधारित सेट इंटरफेसची अंमलबजावणी आहे.