जावा में जैसा कि हम जानते हैं कि कलेक्शंस सबसे महत्वपूर्ण अवधारणाओं में से एक है जो जावा को अपने आप में एक शक्तिशाली भाषा बनाता है। यह केवल जावा में कलेक्शंस का समर्थन है जो इसे किसी भी प्रकार के डेटा को सुविधाजनक और कुशल तरीके से समर्थन करने के साथ-साथ उन पर संभावित CRUD संचालन करने की अनुमति देता है।
लेकिन उसी चरण में जब कलेक्शंस मल्टी-थ्रेडिंग के संपर्क में आते हैं तो उनका प्रदर्शन कुछ हद तक कम हो जाता है क्योंकि कहीं न कहीं कलेक्शंस में मल्टी-थ्रेडिंग वातावरण का समर्थन करने की कमी होती है। इस सीमा को दूर करने के लिए जावा Concurrent Collections पेश करता है जो न केवल मल्टी-थ्रेडिंग वातावरण की सीमा को दूर करता है बल्कि जावा को मल्टीपल थ्रेड्स डेटा के साथ प्रदर्शन करने में भी सक्षम बनाता है।
पारंपरिक कलेक्शंस और समवर्ती कलेक्शंस के बीच निम्नलिखित महत्वपूर्ण अंतर हैं।
| क्र. सं. | मुख्य बिंदु | पारंपरिक कलेक्शंस | समवर्ती कलेक्शंस |
|---|---|---|---|
| 1 | थ्रेड सुरक्षा | जावा कलेक्शंस में अधिकांश क्लासिक क्लास जैसे ArrayList, LinkedList, HashMap आदि सिंक्रनाइज़ नहीं हैं और मल्टी-थ्रेडिंग वातावरण में थ्रेड-सेफ नहीं हैं। | दूसरी ओर जावा समवर्ती कलेक्शंस में उन्हीं क्लास को सिंक्रनाइज़ेशन के साथ कार्यान्वित करता है जो न केवल इन क्लास को सिंक्रनाइज़ बनाता है बल्कि प्रकृति में थ्रेड-सेफ भी बनाता है। |
| 2 | लॉकिंग मैकेनिज्म | पारंपरिक कलेक्शंस में कुछ सिंक्रनाइज़्ड क्लास भी हैं जैसे Vector और Stack लेकिन ये क्लास पूरे कलेक्शन पर लॉक का उपयोग करते हैं जो प्रदर्शन और निष्पादन की गति को कम करता है। | दूसरी ओर समवर्ती कलेक्शंस आंशिक लॉकिंग की अवधारणा पेश करते हैं जहां यह मल्टी-थ्रेडिंग वातावरण में कलेक्शन के केवल भाग को लॉक करता है जो ऐसे वातावरण में प्रदर्शन और कलेक्शंस की गति में सुधार करता है। |
| 3 | रनटाइम अपवाद | पारंपरिक कलेक्शंस के मामले में यदि हम कलेक्शन पुनरावृत्ति के दौरान अलग थ्रेड के माध्यम से कलेक्शन को संशोधित करने का प्रयास करते हैं तो हमें ConcurrentModificationException रनटाइम अपवाद मिलता है। | दूसरी ओर समवर्ती कलेक्शंस के साथ काम करने पर ऐसा अपवाद नहीं मिलेगा यानी समवर्ती कलेक्शंस अपनी पुनरावृत्ति के दौरान कलेक्शन में संशोधन की अनुमति देते हैं। |
| 4 | वरीयता | ऊपर बताए गए कारणों से पारंपरिक कलेक्शंस मल्टी-थ्रेडिंग वातावरण में पसंद नहीं किए जाते हैं। | दूसरी ओर समवर्ती कलेक्शंस मुख्य रूप से मल्टी-थ्रेडिंग वातावरण में पसंद किए जाते हैं। |
| 5 | बाजार में पेश किया गया | पारंपरिक कलेक्शंस जावा में लिगेसी कलेक्शन के प्रकार हैं और समवर्ती कलेक्शंस से पहले पेश किए गए हैं। | जबकि समवर्ती कलेक्शंस JDK 1.5 में पेश किए गए हैं यानी पारंपरिक कलेक्शंस के बाद पेश किए गए हैं। |