64 位 JVM 下,long 和 double 是原子操作吗?
1
rwecho 2017 年 9 月 1 日
原子操作是什么意思?
i++ 在多线程的情况下不是原子操作. 需要做锁的处理 你是说这个吗? |
3
watzds 2017 年 9 月 1 日 via Android
据说不一定,反正想要原子就加 volatile
|
4
skyleft 2017 年 9 月 1 日
32 和 64 都不保证是
要加 volatile 才是 |
5
skyleft 2017 年 9 月 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 |