64 位 JVM 下,long 和 double 是原子操作吗?
1
rwecho 2017-09-01 17:21:20 +08:00
原子操作是什么意思?
i++ 在多线程的情况下不是原子操作. 需要做锁的处理 你是说这个吗? |
3
watzds 2017-09-01 17:48:40 +08:00 via Android
据说不一定,反正想要原子就加 volatile
|
4
skyleft 2017-09-01 17:49:25 +08:00
32 和 64 都不保证是
要加 volatile 才是 |
5
skyleft 2017-09-01 17:53:06 +08:00 1
之所以是不一定 是因为不同的 jvm 有不同的实现 用的最多的 sun hotspot 应该不保证这点
但是 oracle 鼓励在 64 位架构上 jvm 对 long 和 double 的 write 一次完成 具体参考 http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7 |