Java : 64 位 JVM 下, long 和 double 是原子操作吗?

2017-09-01 16:23:22 +08:00
 guyeuro

64 位 JVM 下,long 和 double 是原子操作吗?

2677 次点击
所在节点    问与答
5 条回复
rwecho
2017-09-01 17:21:20 +08:00
原子操作是什么意思?

i++ 在多线程的情况下不是原子操作. 需要做锁的处理
你是说这个吗?
guyeuro
2017-09-01 17:24:53 +08:00
@rwecho

set get i++
watzds
2017-09-01 17:48:40 +08:00
据说不一定,反正想要原子就加 volatile
skyleft
2017-09-01 17:49:25 +08:00
32 和 64 都不保证是
要加 volatile 才是
skyleft
2017-09-01 17:53:06 +08:00
之所以是不一定 是因为不同的 jvm 有不同的实现 用的最多的 sun hotspot 应该不保证这点
但是 oracle 鼓励在 64 位架构上 jvm 对 long 和 double 的 write 一次完成

具体参考 http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7

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

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

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

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

© 2021 V2EX