Java 中 HashTable 和 ConcurrentHashMap 的區別
Concurrent Hashmap 是 jdk1.5 中引入的一個類。 Add 或 update map 時,Concurrent hash map 僅在稱為 segment 的桶級別應用鎖。因此,Concurrent hash map 允許對 map 進行併發讀寫操作。
HashTable 是一個執行緒安全的傳統類,它是在 Jdk1.1 中引入的。它是 Map 介面的基本實現。它不允許空鍵和空值。由於它具有同步特性,因此兩個不同的執行緒不能同時訪問它。HashTable 不維護任何順序。
| 序號 | 鍵 | HashTable | ConcurrentHashMap |
|---|---|---|---|
1 | 基本 | HashTable 是一個執行緒安全的傳統類,它是在 Jdk1.1 中引入的 | ConcurrentHashmap 是 jdk1.5 中引入的一個類 |
2 | 鎖定 | 它在整個集合上應用鎖 | Add 或 update map 時,ConcurrentHashMap 僅在稱為 segment 的桶級別應用鎖 |
3 | 效能 | 它比 ConcurrentHashMap 慢 | 它比 HashTable 好 |
4. | 空 | 它不允許空鍵和空值 | 它允許空鍵和空值 |
HashTable 示例
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
public class HashtableExample {
public static void main(String[] args) {
// create Hashtable
Hashtable map = new Hashtable();
map.put("HCL", "100");
map.put("DELL", "200");
map.put("IBM", "300");
// print the map
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}ConcurrentHashMap 示例
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentHashMapExample {
public static void main(String[] args) {
// ConcurrentHashMap
Map myMap = new ConcurrentHashMap();
myMap.put("HCL", "1");
myMap.put("DELL", "1");
// print the map
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP