Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

HashMap और ConcurrentHashMap के बीच अंतर


जैसा कि हम जानते हैं कि जावा कलेक्शंस डेटा को धारण करने के लिए सबसे महत्वपूर्ण डेटा संरचनाओं में से एक है। कलेक्शंस में Map, Set, List आदि जैसे कई कार्यान्वयन हैं जो इसे डेटा भंडारण के लिए सबसे योग्य बनाते हैं और तदनुसार डेटा को संभालते हैं क्योंकि ये कार्यान्वयन न केवल डेटा भंडारण को प्रभावी बनाते हैं बल्कि मल्टी-थ्रेडिंग वातावरण में डेटा हैंडलिंग की भी अनुमति देते हैं।

कलेक्शंस के अन्य सभी कार्यान्वयनों में से HashMap सबसे महत्वपूर्ण कलेक्शंस में से एक है जो डेटा को Key Value जोड़ी में संग्रहीत करता है। मल्टी-थ्रेडिंग के संदर्भ में कलेक्शंस का एक और कार्यान्वयन है जिसे Concurrent Collection के नाम से जाना जाता है जो HashMap के गुणों के साथ-साथ मल्टी-थ्रेडिंग वातावरण में डेटा हैंडलिंग की भी अनुमति देता है।

दोनों कलेक्शंस के आंतरिक कार्यान्वयन के आधार पर निम्नलिखित महत्वपूर्ण अंतर हैं।

क्र. सं. मुख्य बिंदु HashMap ConcurrentHashMap
1 समवर्तीता जैसा कि ऊपर उल्लेख किया गया है, दोनों कलेक्शंस के बीच मुख्य अंतर समवर्तीता का है। HashMap थ्रेड-सेफ नहीं है। दूसरी ओर ConcurrentHashMap थ्रेड-सेफ है और मल्टी-थ्रेडेड वातावरण में उपयोग के लिए उपयुक्त है।
2 कार्यान्वयन HashMap और ConcurrentHashMap आंतरिक रूप से अलग-अलग कार्यान्वित हैं क्योंकि HashMap में अपने स्टोरेज मैकेनिज्म में सेगमेंट की अवधारणा नहीं है और डेटा को Key Value जोड़ी में संग्रहीत करता है। दूसरी ओर ConcurrentHashMap का कार्यान्वयन इस तरह से किया गया है कि ConcurrentHashMap को इनिशियलाइज़ेशन पर कई सेगमेंट में विभाजित किया जाता है [डिफ़ॉल्ट 16]। ConcurrentHashMap समान संख्या (16) के थ्रेड्स को इन सेगमेंट्स को समवर्ती रूप से एक्सेस करने की अनुमति देता है ताकि उच्च समवर्तीता के दौरान प्रत्येक थ्रेड एक विशिष्ट सेगमेंट पर काम करे।
3 पेश किया गया HashMap JDK 1.2 में पेश किया गया दूसरी ओर ConcurrentHashMap को SUN माइक्रोसिस्टम द्वारा JDK 1.5 में पेश किया गया।
4 Null अनुमति जैसा कि ऊपर उल्लेख किया गया है, HashMap के मामले में Key और Values के लिए Null मान अनुमत हैं। दूसरी ओर ConcurrentHashMap में Key और Value दोनों के लिए Null मान अनुमत नहीं है और यदि ऐसी प्रविष्टि का प्रयास किया जाता है तो NullPointerException कहते हुए रन-टाइम अपवाद मिलता है।
5 सिंक्रनाइज़ेशन HashMap ConcurrentHashMap से बेहतर है क्योंकि कोई सिंक्रनाइज़ेशन नहीं है। दूसरी ओर ConcurrentHashMap में, थ्रेड-सेफ्टी को पूरे Map को समवर्तीता स्तर के आधार पर विभिन्न पार्टीशन में विभाजित करके और पूरे Map को लॉक करने के बजाय केवल विशेष भाग को लॉक करके प्राप्त किया जाता है।
6 प्रदर्शन हम HashMap को Collections.synchronizedMap(HashMap) में लपेटकर सिंक्रनाइज़ कर सकते हैं जो एक संग्रह लौटाएगा जो Hashtable के लगभग समतुल्य है, जहां Map पर हर संशोधन ऑपरेशन Map ऑब्जेक्ट पर लॉक होता है। जैसा कि ऊपर उल्लेख किया गया है, यदि Collections.SynchronizedMap() विधि का उपयोग करने की आवश्यकता है तो ConcurrentHashMap() एक बेहतर विकल्प है क्योंकि ConcurrentHashMap अभी भी एक से अधिक थ्रेड को Map एक्सेस करने का मौका देता है जिससे प्रदर्शन में सुधार होता है।

  1. - जावा में EnumMap और HashMap में अंतर

    EnumMap JDK5 में पेश किया गया है। यह मैप में Enum को की के रूप में उपयोग करने के लिए डिज़ाइन किया गया है। यह Map इंटरफेस का कार्यान्वयन भी है। EnumMap में सभी की एक ही एनम प्रकार की होनी चाहिए। EnumMap में, की नल नहीं हो सकती और कोई भी NullPointerException फेंक देगा। जावा डॉक्स के अनुसार - EnumMap आ

  1. - Go और Java में अंतर

    GoGo एक प्रक्रियात्मक प्रोग्रामिंग भाषा है। प्रोग्राम पैकेज का उपयोग करके असेंबल किए जाते हैं। यह डायनामिक भाषाओं के समान पैटर्न को अपनाने वाले वातावरण का समर्थन करता है।JavaJava एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है। Java काफी तेज, विश्वसनीय और सुरक्षित है। यह सबसे व्यापक रूप से उपयोग की जाने व

  1. - जावा में ConcurrentHashMap और Synchronized HashMap के बीच अंतर

    ConcurrentHashMap एक क्लास है जिसे JDK 1.5 में पेश किया गया था। ConcurrentHashMap मैप में जोड़ते या अपडेट करते समय केवल बकेट लेवल पर लॉक लगाता है जिसे फ्रैगमेंट कहा जाता है। इसलिए, ConcurrentHashMap मैप पर कनकरेंट रीड और राइट ऑपरेशन की अनुमति देता है। Synchronized HashMap (Collections.synchronizedM