参考文章
- ConcurrentHashMap源码&底层数据结构分析
- JUC集合: ConcurrentHashMap详解
- 深入解析 ConcurrentHashMap 实现内幕,吊打面试官,没问题 (次要)
- ConcurrentHashMap源码解析(1.8)(次要)
ConcurrentHashMap 1.7
存储结构
Java7 数据结构使用的是 Segment 数组 + HashEntry 数组 + 链表。Segment 继承了 ReentrantLock 的,所以通过调用 lock() 对 Segment 数组某个元素加锁实现线程安全,相当于分段锁。

ConcurrentHashMap 1.8
存储结构
Java 8 数据结构使用的是 Node 数组 + 链表 / 红黑树。通过 Synchronized 锁+ CAS 的机制,实现线程安全,并且 Synchronized 锁的是桶数组的元素,相比原来更加细粒度
