Skip to content

Commit 88c209c

Browse files
authored
Merge pull request Snailclimb#1142 from huiyadanli/master
修正文案: ConcruuentHashMap -> ConcurrentHashMap
2 parents fc76835 + 123557c commit 88c209c

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

docs/java/collection/ConcurrentHashMap源码+底层数据结构分析.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -573,12 +573,12 @@ public V get(Object key) {
573573

574574
总结:
575575

576-
总的来说 ConcruuentHashMap 在 Java8 中相对于 Java7 来说变化还是挺大的,
576+
总的来说 ConcurrentHashMap 在 Java8 中相对于 Java7 来说变化还是挺大的,
577577

578578
## 3. 总结
579579

580-
Java7 中 ConcruuentHashMap 使用的分段锁,也就是每一个 Segment 上同时只有一个线程可以操作,每一个 Segment 都是一个类似 HashMap 数组的结构,它可以扩容,它的冲突会转化为链表。但是 Segment 的个数一但初始化就不能改变。
580+
Java7 中 ConcurrentHashMap 使用的分段锁,也就是每一个 Segment 上同时只有一个线程可以操作,每一个 Segment 都是一个类似 HashMap 数组的结构,它可以扩容,它的冲突会转化为链表。但是 Segment 的个数一但初始化就不能改变。
581581

582-
Java8 中的 ConcruuentHashMap 使用的 Synchronized 锁加 CAS 的机制。结构也由 Java7 中的 **Segment 数组 + HashEntry 数组 + 链表** 进化成了 **Node 数组 + 链表 / 红黑树**,Node 是类似于一个 HashEntry 的结构。它的冲突再达到一定大小时会转化成红黑树,在冲突小于一定数量时又退回链表。
582+
Java8 中的 ConcurrentHashMap 使用的 Synchronized 锁加 CAS 的机制。结构也由 Java7 中的 **Segment 数组 + HashEntry 数组 + 链表** 进化成了 **Node 数组 + 链表 / 红黑树**,Node 是类似于一个 HashEntry 的结构。它的冲突再达到一定大小时会转化成红黑树,在冲突小于一定数量时又退回链表。
583583

584-
有些同学可能对 Synchronized 的性能存在疑问,其实 Synchronized 锁自从引入锁升级策略后,性能不再是问题,有兴趣的同学可以自己了解下 Synchronized 的**锁升级**
584+
有些同学可能对 Synchronized 的性能存在疑问,其实 Synchronized 锁自从引入锁升级策略后,性能不再是问题,有兴趣的同学可以自己了解下 Synchronized 的**锁升级**

0 commit comments

Comments
 (0)