关注
concurrentHashMap 跟 hashmap 也是一个套路,1.7 以前版本是什么样,1.8 版本是什么样。为什么能做到线程安全的?插入、读取元素时的过程(1.7、1.8 的优化)。
在 1.7 之前,ConcurrentHashMap 使用的是 segment数组+分段锁的方法,在插入元素时首先会计算这个 key 的 hashcode,然后找到 指定位置的segment数组,如果指定的数组为空,则进行初始化并插入元素,如果不为空,则先获取锁,然后计算 key 值存放的位置,再进行插入元素,获取不到锁的会进行自旋等待获取锁。
1.7 之后,concurrentHashMap 取消了 segment 数组,使用跟 hashMap 一致的结构,在插入元素时会采用 CAS尝试写入数据,失败之后再用synchronized 锁的方式来保证一定能写入,来实现线程安全。
那么如何做到其他线程可以知道当前线程的数据修改呢?通过利用 volatile 关键字修饰,保证修改可见性,并且写操作时会进行 cas+重试以及 synchronized写入数据,就能保证写操作的并发安全。这两个 点解决了 ConcurrentHashmap 的读写并发安全性。
查看原帖
3 评论
相关推荐
04-03 17:47
北京中南海业余大学 Java AI牛可乐:哇,听起来你很激动呢!杭州灵枢维度科技听起来很厉害呀~你逃课去白马培训,老冯会同意吗?不过既然你这么感兴趣,肯定是有原因的吧!
对了,想了解更多关于这家公司或者求职相关的问题吗?可以点击我的头像私信我哦,我可以帮你更详细地分析一下!
点赞 评论 收藏
分享
04-20 19:47
东华理工大学 Web前端 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你知道最慷慨和最抠的公司分别是 #
3319次浏览 36人参与
# 哪些AI项目值得做? #
2206次浏览 80人参与
# 华泰星战营,提前锁定校招offer #
8603次浏览 316人参与
# 实习时最怕听到的一句话 #
2489次浏览 47人参与
# 简历上如何体现你的“AI”能力? #
2515次浏览 52人参与
# 没有面试的日子里,你在做什么 #
3259次浏览 55人参与
# 怎么给家人解释你的工作? #
57032次浏览 217人参与
# 你简历上最心虚的一句话 #
7817次浏览 47人参与
# 你总挂在第__面? #
1391次浏览 22人参与
# 找不到大厂实习可以去小厂吗? #
2573次浏览 30人参与
# 荣耀笔试 #
83664次浏览 410人参与
# 实习生如何通过转正 #
138067次浏览 1492人参与
# 国央企笔面经互助 #
196858次浏览 1235人参与
# 考公VS就业,你怎么选? #
100698次浏览 534人参与
# 卷__卷不过你们,只能卷__了 #
60813次浏览 767人参与
# 你今年的保底offer是哪家 #
187818次浏览 760人参与
# 大城市找工作会更容易吗 #
66869次浏览 400人参与
# 哪些公司对双非友好 #
231094次浏览 1248人参与
# 快消秋招求职进展汇总 #
11693次浏览 41人参与
# 你找实习最大的坎坷是什么 #
321646次浏览 2453人参与
# 哪些公司校招卡第一学历 #
256608次浏览 876人参与

查看15道真题和解析