当前位置:主页 > 查看内容

ConcurrentHashMap是如何保证线程安全的

发布时间:2021-06-07 00:00| 位朋友查看

简介:JDK1.7采用分段锁技术 本质上还是采用数组链表的形式存储键值对的。为了提高并发把原来的整个 table 划分为 n 个 Segment 。从整体来看它是一个由 Segment 组成的数组。每个 Segment 里边是由 HashEntry 组成的数组每个 HashEntry之间又可以形成链表。我们可……

JDK1.7,采用分段锁技术

本质上还是采用数组+链表的形式存储键值对的。为了提高并发,把原来的整个 table 划分为 n 个 Segment 。从整体来看,它是一个由 Segment 组成的数组。每个 Segment 里边是由 HashEntry 组成的数组,每个 HashEntry之间又可以形成链表。我们可以把每个 Segment 看成是一个小的 HashMap,其内部结构和 HashMap 是一模一样的。当对某个 Segment 加锁时,不会影响到其他 Segment 的读写,降低锁的竞争。

JDK1.8,采用的是Synchronized + CAS +?volatile

Synchronized 由于锁优化和锁升级性能得到了很大提升,通过?CAS 乐观锁实现原子操作,利用volatile保证可见性。

;原文链接:https://blog.csdn.net/Anenan/article/details/115543284
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐