关注
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 评论
相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
- 1... 一个三无废物985硕士的求救帖!Help8333
- 2... 两年后重看秋招——后悔选择读研,可到底该怎么做?7563
- 3... 秋招公司情报局,分享线索得牛币💰7466
- 4... 字节客户端一面7369
- 5... 月薪一万五,天天都喊苦5607
- 6... 技术不是唯一答案:计算机大学生的第一堂社会课4465
- 7... 手机厂工作一年了,给想进手机行业的兄弟们写点建议4118
- 8... 字节暑期实习三周跑路会被拉黑吗3820
- 9... 机械读研的核心优势是?3242
- 10... 凌晨一点我不可以睡觉吗?我要被你侮辱?我晚上会做噩梦的呜呜呜3037
正在热议
更多
# 大厂面试初体验 #
5854次浏览 42人参与
# 如果可以,你希望哪个公司来捞你 #
101072次浏览 460人参与
# 如何提高实习转正率? #
2431次浏览 30人参与
# leader认为你工作不认真怎么办 #
30956次浏览 142人参与
# 你遇到过哪些神仙同事 #
100387次浏览 724人参与
# 我的国央企投递进展 #
46714次浏览 293人参与
# 国企是理工四大天坑的最好选择吗 #
13719次浏览 95人参与
# 五一之后,实习真的很难找吗? #
78572次浏览 515人参与
# 机械人,你被简历秒挂的企业有哪些? #
43054次浏览 281人参与
# 招聘要求与实际实习内容不符怎么办 #
113055次浏览 770人参与
# 如果公司给你放一天假,你会怎么度过? #
17149次浏览 129人参与
# 找工作时的取与舍 #
80515次浏览 568人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
246394次浏览 1792人参与
# 三一重工求职进展汇总 #
15127次浏览 68人参与
# OPPO求职进展汇总 #
662998次浏览 5041人参与
# 你的秋招第一场笔试是哪家 #
142884次浏览 1453人参与
# 总结:哪家公司面试体验感最差 #
61139次浏览 276人参与
# 如果重来一次你还会读研吗 #
176974次浏览 1786人参与
# 机械人,说说你的烦心事 #
69745次浏览 839人参与
# 面试时被问的最奇葩的问题 #
23032次浏览 130人参与