JDK 1.7

采用了分段加锁的方式,这样不用对整个 HashMap 加锁,因此提高了性能。

java7_concurrenthashmap.png

Java 8

java8_concurrenthashmap.png

可以发现 Java8 的 ConcurrentHashMap 相对于 Java7 来说变化比较大,不再是之前的 Segment 数组 + HashEntry 数组 + 链表,而是 Node 数组 + 链表 / 红黑树。当冲突链表达到一定长度时,链表会转换成红黑树。