JDK1.7 : 【数组(Segment) + 数组(HashEntry) + 链表(HashEntry节点)】

ConcurrentHashMap(分段锁) 对整个桶数组进行了分割分段(Segment),每一把锁只锁 容器其中一部分数据,多线程访问容器里不同数据段的数据,就不会存在锁竞争,提高并发访问率。

Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,HashEntry则用于存储键值对数据。

JDK1.8 : Node数组+链表 / 红黑树

利用CAS+Synchronized来保证并发更新的安全,底层依然采用数组+链表+红黑树的存储结 构。