Java中併發雜湊對映和同步雜湊對映的區別


Concurrent Hashmap 是在 jdk1.5 中引入的一個類。Concurrent hash map 在新增或更新對映時僅在稱為片段的桶級別應用鎖。因此,併發雜湊對映允許對對映進行併發讀寫操作。

Synchronized hashmap(Collection.syncronizedHashMap())是 Collection 框架的一種方法。此方法對整個集合應用鎖。因此,如果一個執行緒正在訪問對映,則任何其他執行緒都無法訪問同一對映。

序號併發雜湊對映同步雜湊對映
1
實現
它是一個實現併發雜湊對映和可序列化介面的類。
它是 Collection 類中的一個方法。
2
鎖定機制
鎖定部分
鎖定整個對映。
3
效能
併發雜湊對映允許併發讀寫。因此,其效能相對優於同步對映。
多個執行緒無法併發訪問對映。因此,其效能相對低於併發雜湊對映。
4
空鍵
它不允許空作為鍵或值。
它允許空作為鍵。
5
併發修改異常
它不會丟擲併發修改異常。
同步對映返回的迭代器會丟擲併發修改異常

SynchronizedMap 示例

public class SynchronizedMapExample {
   public static void main(String[] args) {
      Map<Integer,String> laptopmap = new HashMap<Integer,String>();
      laptopmap.put(1,"IBM");
      laptopmap.put(2,"Dell");
      laptopmap.put(3,"HCL");
      // create a synchronized map
      Map<Integer,String> syncmap = Collections.synchronizedMap(laptopmap);
      System.out.println("Synchronized map is : "+syncmap);
   }
}

ConcurrentHashMap 示例

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

更新於: 2019年11月18日

7K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告