关注
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 评论
相关推荐
昨天 19:44
上海大学 Java 牛客57020934...:现在大厂就很迷,感觉要么就是算法+agent,要么就是开发+agent。。还是招和原来一样的岗位,只是都要求赋能agent了
点赞 评论 收藏
分享
2025-11-13 13:48
Nanyang Technological University Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 哪些公司在招寒假实习? #
15434次浏览 194人参与
# 国企vs私企,你更想去? #
305674次浏览 2491人参与
# MiniMax求职进展汇总 #
750次浏览 23人参与
# 26年哪些行业会变好/更差 #
18676次浏览 256人参与
# 卷__卷不过你们,只能卷__了 #
11744次浏览 264人参与
# 有深度的简历长什么样? #
16429次浏览 340人参与
# 写论文的崩溃时刻 #
6288次浏览 148人参与
# 去年的flag与今年的小目标 #
9854次浏览 196人参与
# 关于春招你都做了哪些准备? #
122162次浏览 707人参与
# 机械人,你最希望上岸的公司是? #
198079次浏览 1917人参与
# 现在还是0offer,延毕还是备考 #
1256374次浏览 7922人参与
# 你不能接受的企业文化有哪些 #
11696次浏览 169人参与
# 入职第一天 #
10037次浏览 219人参与
# 租房前辈的忠告 #
350455次浏览 7445人参与
# 你都用AI做什么 #
6764次浏览 156人参与
# 你怎么看待AI面试 #
133407次浏览 745人参与
# 发工资后,你做的第一件事是什么 #
93115次浏览 311人参与
# 最难的技术面是哪家公司? #
62962次浏览 949人参与
# 腾讯音乐求职进展汇总 #
147903次浏览 1053人参与
# 华为池子有多大 #
159133次浏览 876人参与
# 一人分享一道面试手撕题 #
22612次浏览 799人参与