कॉपीऑनराइटएरेलिस्ट
किसी दिए गए संग्रह पर ऐड , सेट , रिमूव ऑपरेशंस के परिणामस्वरूप आंतरिक सरणी की एक नई प्रति बनाई जा रही है। यह सुनिश्चित करता है कि हम ConcurrentModificationException को नहीं पकड़ते हैं ।
बस याद रखें कि किसी सरणी की प्रतिलिपि बनाते समय, केवल ऑब्जेक्ट के संदर्भों की प्रतिलिपि बनाई जाती है, जिसमें गैर-थ्रेड-सुरक्षित तत्वों के फ़ील्ड तक पहुंच शामिल है। इस तरह के संग्रह का सबसे अच्छा उपयोग उन मामलों में किया जाता है जिनमें न्यूनतम संख्या में लेखन कार्य होते हैं।
CopyOnWriteArrayList<E> ArrayList का एक थ्रेड-सुरक्षित एनालॉग है, जिसे CopyOnWrite एल्गोरिदम के आधार पर लागू किया गया है। अतिरिक्त तरीके और कंस्ट्रक्टर नीचे वर्णित हैं:
कॉपीऑनराइटएरेलिस्ट (ई [] से कॉपीइन) | एक कंस्ट्रक्टर जो एक सरणी को इनपुट के रूप में लेता है। |
इंट इंडेक्सऑफ (ई ई, इंट इंडेक्स) | दिए गए इंडेक्स से शुरू होने वाले पहले तत्व का इंडेक्स लौटाता है। |
इंट लास्टइंडेक्सऑफ (ई ई, इंट इंडेक्स) | दिए गए इंडेक्स से शुरू करते हुए रिवर्स सर्च में मिले पहले तत्व का इंडेक्स लौटाता है। |
बूलियन एडइफएब्सेंट (ई ई) | यदि यह संग्रह में नहीं है तो एक तत्व जोड़ें। तत्वों की तुलना करने के लिए बराबर विधि का उपयोग किया जाता है । |
int addAllAbsent(संग्रह <? विस्तार ई> सी) | यदि वे संग्रह में नहीं हैं तो तत्व जोड़ें। जोड़े गए तत्वों की संख्या लौटाता है। |
समवर्ती मानचित्र इंटरफ़ेस
मल्टीथ्रेडिंग और स्केलेबिलिटी के समर्थन के साथ हैश मैप और ट्री मैप का बेहतर कार्यान्वयन ।
ConcurrentMap<K, V> एक इंटरफ़ेस है जो मानचित्र को अतिरिक्त परमाणु संचालन के साथ विस्तारित करता है।
V putIfAbsent (K कुंजी, V मान) | एक नया की-वैल्यू पेयर केवल तभी जोड़ता है जब कुंजी संग्रह में नहीं है। दी गई कुंजी के लिए पिछला मान लौटाता है। |
बूलियन निकालें (ऑब्जेक्ट कुंजी, ऑब्जेक्ट वैल्यू) | की-वैल्यू जोड़ी को तभी हटाता है जब दी गई कुंजी मैप में दिए गए मान से मेल खाती है। यदि तत्व सफलतापूर्वक हटा दिया गया था तो सत्य वापस आ जाता है। |
बूलियन रिप्लेस (के की, वी ओल्डवैल्यू, वी न्यूवैल्यू) | कुंजी द्वारा पुराने मान को नए मान से केवल तभी प्रतिस्थापित करता है जब पुराना मान मानचित्र में दिए गए मान से मेल खाता हो। यदि मान को नए मान से बदल दिया गया है, तो सही रिटर्न देता है। |
वी बदलें (के कुंजी, वी मान) | कुंजी के द्वारा पुराने मान को नए मान से तभी बदलता है जब कुंजी किसी मान से संबद्ध हो। दी गई कुंजी के लिए पिछला मान लौटाता है। |
ConcurrentHashMap<K, V> - यहां डेटा को सेगमेंट के रूप में प्रस्तुत किया जाता है, जो प्रमुख हैश में विभाजित होते हैं। परिणामस्वरूप, यदि आपको एक्सेस की आवश्यकता है, तो सेगमेंट लॉक है, ऑब्जेक्ट नहीं। Iterators ConcurrentModificationException को नहीं फेंकते हैंऔर एक विशिष्ट अवधि के लिए डेटा का प्रतिनिधित्व करते हैं।
ConcurrentHashMap का कार्यान्वयन
ConcurrentHashMap<K, V> - यहां डेटा को खंडों के रूप में प्रस्तुत किया जाता है, जो कुंजी हैश द्वारा विभाजित होता है। नतीजतन, डेटा एक्सेस सेगमेंट द्वारा लॉक किया गया है, एक ऑब्जेक्ट द्वारा नहीं। इसके अलावा, पुनरावर्तक समय के एक विशिष्ट टुकड़े के लिए डेटा का प्रतिनिधित्व करते हैं और ConcurrentModificationException को नहीं फेंकते हैं।
ConcurrentNavigableMap<K,V> - NavigableMap इंटरफ़ेस का विस्तार करता है और एक ConcurrentNavigableMap लौटाता है । सभी पुनरावर्तक उपयोग करने के लिए सुरक्षित हैं और ConcurrentModificationException को नहीं फेंकते हैं।
ConcurrentSkipListMap<K, V> मल्टीथ्रेडिंग के लिए TreeMap का एक एनालॉग हैडेटा को कुंजी द्वारा सॉर्ट किया जाता है और औसत लॉग (एन) प्रदर्शन की गारंटी होती है, जिसमेंकी,गेट,पुट,रिमूवऔर अन्य समान ऑपरेशन होते हैं।
ConcurrentSkipListSet<E> ConcurrentSkipListMap पर आधारित सेट इंटरफ़ेस का कार्यान्वयन है।