首页 > 编程语言 > 详细

ConcurrentHashMap线程安全的具体实现方式/底层具体实现

时间:2019-11-21 01:00:20      阅读:167      评论:0      收藏:0      [点我收藏+]

1. jdk1.7以及之前

  ConcurrentHashMap 是由 Segment 数组结构和 HashEntry 数组结构组成

  通俗的话讲:就是首先将数据分为一段一段的存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据时,其他段的数据也能被其他线程访问。

  示意图:

    技术分享图片

2. JDK1.8

  ConcurrentHashMap取消了Segment分段锁,采用CAS和synchronized来保证并发安全。

  数据结构跟HashMap1.8的结构类似,数组+链表/红黑二叉树。

  synchronized只锁定当前链表或红黑二叉树的首节点,这样只要hash不冲突,就不会产生并发,效率又提升N倍。

 示意图:

  技术分享图片

 

 

 

 

ConcurrentHashMap线程安全的具体实现方式/底层具体实现

原文:https://www.cnblogs.com/changchangchang/p/11902076.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!