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