非原子的 64 位操作

Posted xmsx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非原子的 64 位操作相关的知识,希望对你有一定的参考价值。

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

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

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

以上是关于非原子的 64 位操作的主要内容,如果未能解决你的问题,请参考以下文章

2. 原子性 Atomic

对象的共享

64 位托管进程:进程外 32 位 COM 服务器非默认接口不可用

如何在x86 ASM中原子地移动64位值?

Java多线程AtomicLong和LongAdder

自动化测试——读写64位操作系统的注册表