ConcurrentHashMap 源码中 initTable()方法疑问

2022-01-12 17:28:55 +08:00
 lihahahayang

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

/**

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

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

https://www.v2ex.com/t/827870

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

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

© 2021 V2EX