非原子的 64 位操作

Java 内存模型要求,变量的读操作和写操作都必须是原子操作(最低安全性)。

但是也有例外,对于非 volatile 类型的 double 和 long 变量,JVM 允许将 64 位的读操作或写操作分为两个 32 位的操作,因此,多线程中使用共享可变的 long、double 变量是不安全的。

解决办法?用 volatile 关键字声明变量,或用锁保护变量的读写。

原文地址:https://www.cnblogs.com/xmsx/p/9720406.html