关注
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 评论
相关推荐
点赞 评论 收藏
分享
03-28 00:43
杭州电子科技大学 C++
找工作勤劳小蜜蜂:矛盾是没有实习,就是没实战经验,公司不想要,公司不要,你就没有实习,你就进入死循环,另外你的项目不是社会现在有大量岗位存在行业用的,云存储人员早就饱和。 点赞 评论 收藏
分享
牛客热帖
更多
- 1... AI Agent 面试 Top50 必刷题1.8W
- 2... 看不懂组内文档,实习怎么偷产出?8836
- 3... 解决了xd们,发了个dy曝光视频,十几万播放,直接让他火速联系我,赔我路费了,兄弟们碰到不公平的违法行为,一定要积极捍卫自己权益4628
- 4... 要对实习同事表白吗?4601
- 5... 五月了,感觉实习很难找了4311
- 6... 理性讨论,卷实习算不算工贼行为?4158
- 7... 妈妈只想要你快乐3486
- 8... 三段大厂,说下我见过的最低学历3302
- 9... 26届双非本求职总结3174
- 10... 逆天操作,也是让我遇到了3097
正在热议
更多
# 26届春招投递记录 #
35604次浏览 296人参与
# 你今年的平均薪资是多少? #
229867次浏览 1065人参与
# 27届实习投递记录 #
120021次浏览 1369人参与
# 求职你最看重什么? #
170251次浏览 914人参与
# 如何成为1个AI工程师? #
5472次浏览 273人参与
# 我想象的实习vs现实的实习 #
340632次浏览 2315人参与
# 要毕业了,再不说就来不及了 #
8510次浏览 150人参与
# 硬件人的简历怎么写 #
349564次浏览 3141人参与
# 你在职场上见过哪些“水货”同事 #
41905次浏览 179人参与
# 秋招提前批,你开始投了吗 #
766445次浏览 8495人参与
# 哪些公司校招卡第一学历 #
262369次浏览 879人参与
# 你觉得机械有必要实习吗 #
88991次浏览 536人参与
# 机械人的秋招小目标 #
32918次浏览 251人参与
# 面试被问第一学历差时该怎么回答 #
297056次浏览 2306人参与
# 国庆假期,给大脑放个假 #
26913次浏览 121人参与
# 提名点击就挂的公司 #
146590次浏览 494人参与
# AI面会问哪些问题? #
136307次浏览 3634人参与
# 秋招想进国企该如何准备 #
150478次浏览 693人参与
# 机械人,你的秋招第一份简历被谁挂了 #
272469次浏览 2455人参与
# 携程笔试 #
179762次浏览 926人参与
查看16道真题和解析