ConcurrentHashMap ओरेकल डॉक्स के अनुसार,
ConcurrentHashMap के निर्माता इस तरह दिखता है निर्दिष्ट प्रारंभिक क्षमता, लोड कारक और समवर्ती स्तर के साथ नया, खाली नक्शा। जहां, महत्वपूर्ण ConcurrentHashMap निर्माता से विचार करने के लिए पैरामीटर:
- initialCapacity - आरंभिक क्षमता। कार्यान्वयन इन कई तत्वों को समायोजित करने के लिए आंतरिक आकार का प्रदर्शन करता है।
- concurrencyLevel - समवर्ती रूप से अद्यतन धागे की अनुमानित संख्या। कार्यान्वयन इस कई धागे को समायोजित करने का प्रयास करने के लिए आंतरिक आकार का प्रदर्शन करता है।
ConcurrentHashMap Api में, आपको निम्न स्थिरांक मिलेंगे।
- स्थिर अंतिम int DEFAULT_INITIAL_CAPACITY = 16;
- स्थैतिक अंतिम int DEFAULT_CONCURRENCY_LEVEL = 16;
प्रारंभिक क्षमता पैरामीटर और ConcurrentHashMap कन्स्ट्रक्टर (या ऑब्जेक्ट) के समवर्ती स्तर पैरामीटर डिफ़ॉल्ट रूप से 16 पर सेट हैं।
इस प्रकार, मानचित्र के विस्तृत लॉक के बजाय, ConcurrentHashMap डिफ़ॉल्ट रूप से 16 ताले की एक सूची बनाए रखता है (प्रारंभिक क्षमता के बराबर ताले की संख्या, जो डिफ़ॉल्ट रूप से 16 है) प्रत्येक का उपयोग एक बाल्टी को लॉक करने के लिए किया जाता है नक्शा। यह इंगित करता है कि 16 धागे (समरूपता स्तर के बराबर धागे की संख्या, जो डिफ़ॉल्ट रूप से 16 है) एक ही समय में संग्रह को संशोधित कर सकती है, प्रत्येक थ्रेड अलग-अलग बाल्टी पर काम करता है। तो हैशटेबल के विपरीत, हम ConcurrentHashMap में पूरे मानचित्र पर लॉक किए बिना किसी भी प्रकार का ऑपरेशन (अपडेट, डिलीट, रीड, बिल्ड) करते हैं।
रिट्रीवल परिचालन (प्राप्त सहित) आम तौर पर ब्लॉक नहीं है। यह इस मामले में अस्थिरता की अवधारणा का उपयोग करता है।, इसलिए अद्यतन संचालन (डाल और निकालने सहित) के साथ ओवरलैप हो सकता है। पुनर्प्राप्ति उनके प्रारंभ होने पर हाल ही में किए गए नवीनतम अपडेट ऑपरेशन के परिणामों को दर्शाती है।
अद्यतन आपरेशनों के बीच की अनुमति दी संगामिति वैकल्पिक concurrencyLevel निर्माता तर्क (डिफ़ॉल्ट 16) है, जो आंतरिक आकार के लिए एक संकेत के रूप में प्रयोग किया जाता है द्वारा निर्देशित है। सारणी को बिना किसी विवाद के समवर्ती अद्यतनों की इंगित संख्या की अनुमति देने के लिए आंतरिक रूप से विभाजित किया गया है। क्योंकि हैश टेबल में प्लेसमेंट अनिवार्य रूप से यादृच्छिक है, वास्तविक समरूपता अलग-अलग होगी। आदर्श रूप में, आपको कई धागे को समायोजित करने के लिए एक मूल्य चुनना चाहिए जैसा कि तालिका को समेकित रूप से संशोधित करेगा। आपको आवश्यकतानुसार एक महत्वपूर्ण उच्च मूल्य का उपयोग करने से अंतरिक्ष और समय बर्बाद हो सकता है, और काफी कम मूल्य धागा विवाद पैदा कर सकता है।
मुझे आशा है कि इससे मदद मिलती है!
स्रोत
2017-09-26 11:25:38
सवाल hi..highlighted –
तो तुम ConcurrentHashMap और ReadWriteLock के बीच क्या मतलब है? –