ConcurrentHashMap

首先它是一个线程安全的,它的底层实现是链表+数组+红黑树。

在jdk1.8之前它实现线程安全的方式是:数组+Segment+分段锁实现,其内部分为一个个段数组。Segment通过继承ReentrantLock来进行加锁,通过锁住一个Segment来保证每个Segment内操作的线程安全性,从而实现了全局安全。然后这样做有个缺陷,每次通过hash确认位置时需要两次才能定位当前key落在哪个槽

第一次确认当前key落在哪个Segment数组;第二次确认当前key的具体位置

在jdk1.8之后,它取消了分段锁的设计,使用了CAS+synchronized来实现线程安全的;

想了解更多请参考博客

https://blog.csdn.net/weixin_46574815/article/details/123636105