该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点
面试官:ConcurrentHashMap和HashTable的不同之处
ConcurrentHashMap
和HashTable
都是Java中用于存储键值对的集合类
-
实现机制:
- ConcurrentHashMap:
ConcurrentHashMap
在Java 5中引入,采用了分段锁(segment)技术,将一个大的哈希表分成多个小的哈希表(默认为16个),每个小的哈希表有自己的锁。这样,在多线程环境下,不同的线程可以同时操作不同的段,从而提高了并发性能。从Java 8开始,ConcurrentHashMap
进一步优化,采用了CAS(Compare-And-Swap)操作和弱一致性的迭代器,减少了锁的使用,提高了性能。 - Hashtable:
HashTable
是早期的线程安全哈希表实现,它使用synchronized
关键字来确保每个方法都是同步的。这意味着在任何时刻,只有一个线程能够操作HashTable
,这在高并发场景下会导致性能瓶颈。
- ConcurrentHashMap:
-
性能:
-
<