ConcurrentHashMap 源码中 initTable()方法疑问

2022 年 1 月 12 日
 lihahahayang

ConcurrentHashMap 源码中 initTable()方法为啥要使用临时变量 tab 和 sc ,集合中变量 table 不都是已经 volatile 立即可见的吗,每次都要拷贝到临时变量中有啥具体意义吗? 这样写不行吗? while (table == null || table.length == 0)

/**

2690 次点击
所在节点    Java
3 条回复
lihahahayang
2022 年 1 月 12 日
自己又看了看,方法中进行拷贝主要减少 table 变量的竞争,数据更新都是通过对 table 的 cas 操作完成。
xxxrubyxxx
2022 年 1 月 12 日
huang119412
2022 年 1 月 19 日
It's a coding style made popular by Doug Lea. It's an extreme optimization that probably isn't necessary;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/827870

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX