Java多线程 关于long和double的原子性

关于long和double的原子性

在oracle的官方文档中有提到对于double 和long类型, 是存在64位的值的写入的, 可以分为两个32位的操作进行写入的, 那么可能线程读取double和long类型的时候 , 读取其中32位的内容是上一个线程的, 读取下一个32位的内容这个线程 , 可能会造成读取错误. 使用volatile修饰可以保证其原子性.
结论 : 在32位的机器上, long和double操作都不是原子的, 但是64位的jvm上是原子的.
但是在实际的生产环境中, jvm已经避免了将其拆分为两个32位的操作.