কম্পিউটার টিউটোরিয়াল

জাভাতে ConcurrentHashMap এবং Synchronized HashMap-এর পার্থক্য

ConcurrentHashMap JDK 1.5-এ ইন্ট্রোডিউসড একটি ক্লাস। এটি বাকেট লেভেলে (ফ্র্যাগমেন্ট) লক প্রয়োগ করে ম্যাপে অ্যাড বা আপডেট করার সময়। তাই কাঙ্কারেন্ট রিড এবং রাইট অপারেশন অনুমতি দেয়।

Synchronized HashMap (Collections.synchronizedMap()) কালেকশন ফ্রেমওয়ার্কের একটি মেথড। এটি পুরো কালেকশনে লক লাগায়। এক থ্রেড ম্যাপ এক্সেস করলে অন্য থ্রেড অ্যাক্সেস করতে পারে না।

ConcurrentHashMap এবং Synchronized HashMap-এর তুলনা

ক্রমিক নং বিষয় ConcurrentHashMap Synchronized HashMap
১ ইমপ্লিমেন্টেশন একটি ক্লাস যা ConcurrentMap এবং Serializable ইমপ্লিমেন্ট করে Collections ক্লাসের একটি মেথড
২ লক মেকানিজম পোর্শন লক করে (সেগমেন্ট/বাকেট লেভেল) পুরো ম্যাপ লক করে
৩ পারফরম্যান্স কাঙ্কারেন্ট রিড/রাইট অনুমতি দেয়, পারফরম্যান্স ভালো একসাথে একাধিক থ্রেড অ্যাক্সেস করতে পারে না, পারফরম্যান্স কম
৪ নাল কি নাল কি বা ভ্যালু অনুমতি দেয় না নাল কি অনুমতি দেয়
৫ ConcurrentModificationException নিক্ষেপ করে না সিনক্রোনাইজড ম্যাপের ইটেরেটর নিক্ষেপ করে

SynchronizedMap উদাহরণ

public class SynchronizedMapExample {
    public static void main(String[] args) {
        Map<Integer, String> laptopmap = new HashMap<>();
        laptopmap.put(1, "IBM");
        laptopmap.put(2, "Dell");
        laptopmap.put(3, "HCL");
        
        // সিনক্রোনাইজড ম্যাপ তৈরি
        Map<Integer, String> syncmap = Collections.synchronizedMap(laptopmap);
        System.out.println("Synchronized map is: " + syncmap);
    }
}

ConcurrentHashMap উদাহরণ

public class ConcurrentHashMapExample {
    public static void main(String[] args) {
        Map<Integer, String> laptopmap = new ConcurrentHashMap<>();
        laptopmap.put(1, "IBM");
        laptopmap.put(2, "Dell");
        laptopmap.put(3, "HCL");
        
        System.out.println("ConcurrentHashMap is: " + laptopmap);
    }
}

মূল নোট

  • ConcurrentHashMap: হাই কাঙ্কারেন্সি, নন-ব্লকিং রিড, আধুনিক অ্যাপ্লিকেশনের জন্য পছন্দনীয়
  • Synchronized Map: লিগ্যাসি কোড, সিম্পল ইউজ কেস, কম কাঙ্কারেন্সি
  • জাভা ৮+ এ ConcurrentHashMap-এ computeIfAbsent, merge, forEachなど উন্নত মেথড রয়েছে
  1. জাভাতে ConcurrentHashMap এবং Synchronized HashMap-এর পার্থক্য

  2. জাভাতে TreeSet এবং HashSet-এর পার্থক্য

  3. জাভাতে Iterator এবং Enumeration-এর পার্থক্য

  4. জাভাতে ArrayList এবং HashSet-এর পার্থক্য