参考文章

  1. ConcurrentHashMap源码&底层数据结构分析
  2. JUC集合: ConcurrentHashMap详解
  3. 深入解析 ConcurrentHashMap 实现内幕,吊打面试官,没问题 (次要)
  4. ConcurrentHashMap源码解析(1.8)(次要)

ConcurrentHashMap 1.7

存储结构

Java7 数据结构使用的是 Segment 数组 + HashEntry 数组 + 链表。Segment 继承了 ReentrantLock 的,所以通过调用 lock() 对 Segment 数组某个元素加锁实现线程安全,相当于分段锁。
ConcurrentHashMap - 图1
java-thread-x-concurrent-hashmap-1.png

ConcurrentHashMap 1.8

存储结构

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