ConcurrentHashMap 和 Hashtable 的区别是什么?
时间: 2023-11-16 19:22:19 浏览: 82
Hashtable和HashMap区别
ConcurrentHashMap和Hashtable都是线程安全的Map实现,它们的主要区别在于:
1. 锁机制不同:Hashtable在每个方法上都使用了`synchronized`关键字来实现同步,这意味着在同一时间只能有一个线程访问Hashtable。而ConcurrentHashMap使用了一种不同的锁机制,它将Map分成了若干个小的部分,每个部分可以被不同的线程独立访问,因此多个线程可以同时访问ConcurrentHashMap,这样可以提高并发性能。
2. 迭代器不同:Hashtable的迭代器是通过Hashtable本身的`synchronized`机制来保证线程安全的,而ConcurrentHashMap的迭代器是弱一致性的,它不会抛出`ConcurrentModificationException`异常,但不能保证迭代器返回的结果是最新的。
3. null值不同:Hashtable不允许插入null值,而ConcurrentHashMap可以插入null键和null值。
总的来说,ConcurrentHashMap相比Hashtable在并发性能方面更优秀,而Hashtable则更加稳定可靠。
阅读全文