File tree Expand file tree Collapse file tree 1 file changed +1
-1
lines changed
Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change @@ -662,7 +662,7 @@ public V get(Object key) {
662662
663663Java7 中 ` ConcurrentHashMap ` 使用的分段锁,也就是每一个 Segment 上同时只有一个线程可以操作,每一个 ` Segment ` 都是一个类似 ` HashMap ` 数组的结构,它可以扩容,它的冲突会转化为链表。但是 ` Segment ` 的个数一但初始化就不能改变。
664664
665- Java8 中的 ` ConcurrentHashMap ` 使用的 ` Synchronized ` 锁加 CAS 的机制。结构也由 Java7 中的 ** ` Segment ` 数组 + ` HashEntry ` 数组 + 链表** 进化成了 ** Node 数组 + 链表 / 红黑树** ,Node 是类似于一个 HashEntry 的结构。它的冲突再达到一定大小时会转化成红黑树,在冲突小于一定数量时又退回链表 。
665+ Java8 中的 ` ConcurrentHashMap ` 使用的 ` Synchronized ` 锁加 CAS 的机制。结构也由 Java7 中的 ** ` Segment ` 数组 + ` HashEntry ` 数组 + 链表** 进化成了 ** Node 数组 + 链表 / 红黑树** ,Node 是类似于一个 HashEntry 的结构。它的冲突再达到一定大小时 ` TREEIFY_THRESHOLD = 8 ` 会转化成红黑树,在冲突小于一定数量时 ` UNTREEIFY_THRESHOLD = 6 ` 又退回链表 。
666666
667667有些同学可能对 ` Synchronized ` 的性能存在疑问,其实 ` Synchronized ` 锁自从引入锁升级策略后,性能不再是问题,有兴趣的同学可以自己了解下 ` Synchronized ` 的** 锁升级** 。
668668
You can’t perform that action at this time.
0 commit comments