আমরা জাভা কালেকশনে জানি ডাটা ধারণ করার জন্য সবচেয়ে গুরুত্বপূর্ণ ডাটা স্ট্রাকচারের একটি। সংগ্রহগুলিতে একাধিক বাস্তবায়ন রয়েছে যেমন মানচিত্র, সেট তালিকা ইত্যাদি যা এটিকে ডেটা স্টোরেজের জন্য সবচেয়ে যোগ্য করে তুলেছে এবং সেই অনুযায়ী এটিকে ম্যানিপুলেট করে কারণ এই বাস্তবায়নগুলি শুধুমাত্র ডেটা স্টোরেজকে কার্যকর করেনি বরং মাল্টি-থ্রেডিং পরিবেশে ডেটা পরিচালনার অনুমতি দেয়।
সংগ্রহের অন্যান্য সকল বাস্তবায়নের মধ্যে হ্যাশ ম্যাপ হল একটি গুরুত্বপূর্ণ সংগ্রহ যা মূল মান জোড়ায় ডেটা সংরক্ষণ করে। মাল্টি-থ্রেডিংয়ের প্রেক্ষাপটে সমকালীন সংগ্রহ নামে পরিচিত সংগ্রহগুলির আরও একটি বাস্তবায়ন রয়েছে যা হ্যাশ মানচিত্রের বৈশিষ্ট্যগুলির সাথে এটি মাল্টি-থ্রেডিং পরিবেশে ডেটা পরিচালনার অনুমতি দেয়।
এই উভয় সংগ্রহের অভ্যন্তরীণ বাস্তবায়নের ভিত্তিতে নিম্নলিখিত গুরুত্বপূর্ণ পার্থক্যগুলি রয়েছে৷
৷Sr. না। | কী | হ্যাশম্যাপ | ConcurrentHashMap |
---|---|---|---|
1 | সঙ্গতি | উপরে উল্লিখিত হিসাবে এই সংগ্রহের উভয়ের মধ্যে প্রধান পার্থক্য হল সামঞ্জস্যপূর্ণ হ্যাশম্যাপ কোন থ্রেড নিরাপদ নয়। | অন্যদিকে ConcurrentHashMap হল থ্রেড নিরাপদ এবং মাল্টি-থ্রেডেড পরিবেশে ব্যবহারের জন্য উপযুক্ত৷ |
2 | বাস্তবায়ন | হ্যাশম্যাপ এবং কনকারেন্টহ্যাশম্যাপ অভ্যন্তরীণভাবে ভিন্নভাবে প্রয়োগ করা হয় কারণ হ্যাশম্যাপের ধারণা থাকে না যদি এর স্টোরেজ মেকানিজমের সেগমেন্ট এবং মূল মান জোড়ায় ডেটা সংরক্ষণ করে। | অন্যদিকে সমবর্তী হ্যাশম্যাপকে এমনভাবে বাস্তবায়ন করা যাতে সমবর্তী হ্যাশম্যাপ শুরুতে [ডিফল্ট 16] অংশে বিভক্ত হয়। ConcurrentHashMap একই সংখ্যক (16) থ্রেডকে একই সাথে এই বিভাগগুলিতে অ্যাক্সেস করার অনুমতি দেয় যাতে প্রতিটি থ্রেড উচ্চ সমঝোতার সময় একটি নির্দিষ্ট সেগমেন্টে কাজ করে। |
3 | প্রবর্তন করা হয়েছে | হ্যাশম্যাপ JDK 1.2 এ প্রবর্তিত হয়েছে | অন্যদিকে ConcurrentHashMap JDK 1.5 এ SUN মাইক্রোসিস্টেম দ্বারা প্রবর্তিত হয়েছে। |
4 | শূন্য অনুমতি | উপরে উল্লিখিত শূন্য মানগুলি হ্যাশম্যাপের ক্ষেত্রে কী এবং মানগুলির জন্য অনুমোদিত৷ | অন্যদিকে সমবর্তী হ্যাশম্যাপে নাল মান কী বা মানের জন্য অনুমোদিত নয় এবং যদি এই ধরনের এন্ট্রির জন্য চেষ্টা করা হয় তবে NullPointerException বলে রান-টাইম ব্যতিক্রম পাবেন। |
5 | সিঙ্ক্রোনাইজেশন | হ্যাশম্যাপ সমসাময়িক হ্যাশম্যাপের চেয়ে ভাল কারণ কোন সিঙ্ক্রোনাইজেশন নেই। | অন্যদিকে ConcurrentHashMap, থ্রেড-নিরাপত্তা সম্পূর্ণ মানচিত্রকে কনকারেন্সি লেভেলের উপর ভিত্তি করে বিভিন্ন পার্টিশনে বিভক্ত করে এবং পুরো ম্যাপটিকে লক করার পরিবর্তে শুধুমাত্র নির্দিষ্ট অংশ লক করার মাধ্যমে অর্জন করা হয়। |
6 | পারফরম্যান্স | আমরা হ্যাশম্যাপটিকে Collections.synchornizedMap(HashMap) এ মোড়ানোর মাধ্যমে সিঙ্ক্রোনাইজ করতে পারি যা একটি সংগ্রহ ফিরিয়ে দেবে যা প্রায় হ্যাশটেবলের সমতুল্য, যেখানে মানচিত্রের প্রতিটি পরিবর্তন ক্রিয়াকলাপ মানচিত্র অবজেক্টে লক করা থাকে। | উপরে উল্লিখিত হিসাবে Collections.SynchronizedMap() পদ্ধতি ব্যবহার করার প্রয়োজন আছে তাহলে ConcurrentHashMap() একটি ভাল পছন্দ কারণ ConcurrentHashMap এখনও মানচিত্র অ্যাক্সেস করার একাধিক থ্রেডের সুযোগ দেয় এইভাবে কর্মক্ষমতা উন্নত করে। |