-
HashTable使用的是Synchronized锁,这意味着所有对HashTable的操作(包括读取和写入)都会被锁定,导致在同一时刻只能有一个线程对其进行操作,这种全局锁的使用大大降低了其并发性能,因为任何线程想要访问HashTable都需要等待当前持有锁的线程释放锁。
-
ConcurrentHashMap采用了锁分段技术来保证线程安全。它将哈希表分成若干个segment,每一把锁只锁容器其中一部分数据,这样允许多个线程同时对不同的部分进行操作,从而显著提高了并发性能
-
ConcurrentHashMap在JDK1.7中采用分段锁实现线程安全,在JDK1.8中则采用了CAS(无锁算法)+Synchronized的组合来进一步提高效率
-
为什么 ConcurrentHashMap 比 HashTable效率要高?
![](https://img-home.csdnimg.cn/images/20240611030827.png)