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);
}
}
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP