java中long和double的非原子性协定

16次阅读

共计 259 个字符,预计需要花费 1 分钟才能阅读完成。

微信公众号:51 码农网
专业编程问答社区
www.51manong.com

Java 内存模型对于 64 位的数据类型(long 和 double),特别定义了一条规定: 允许虚拟机将没有被 volatile 修饰的 64 位数据的读写操作划分为两次 32 位的操作来进行。即允许虚拟机实现选择可以不保证 64 位数据类型的 load、store、read 和 write 这 4 个操作的原子性。不过目前各种平台下的商用虚拟机几乎都选择把 64 位数据的读写操作作为原子操作来对待,因此编码时,一般不需要把用到的 long 和 double 变量专门声明为 volatile。

正文完
 0