繁体   English   中英

Java AtomicReference如何在引擎盖下工作

[英]How java AtomicReference works under the hood

Java AtomicReference如何在引擎盖下工作? 我尝试查看代码,但基于sun.misc.Unsafe,所以可能另一个问题是不安全是如何工作的?

这是特定于当前实现的并且可以改变但不一定是文档

Java AtomicReference如何在引擎盖下工作

有两个操作。 单读/写或原子交换。

  1. 单个读/写是简单的volatile加载或存储。
  2. 原子交换需要处理器级指令。 最常见的实现是在arm,ppc和alpha上找到的sparc-TSO,x86和ia64以及LL / SC上的Compare和Swap(CAS)。 我相信还有更多我错过了但这会让你了解范围。

另一个问题是不安全是如何运作的?

不安全通过利用处理器指令的本机方法工作。

资料来源:

http://gee.cs.oswego.edu/dl/jmm/cookbook.html

AtomicReference有两个领域: -
* value,它是引用* valueOffset,它是来自'this'的值的位置,即AtomicReference
在compareAndSwap(预期,更新)中,使用==语义与“expected”比较此位置+ valueOffset处的对象,如果==,则使用“updated”进行更新。
这是一个单一的硬件指令,因此保证以原子方式返回错误或失败。
从openJDK中读取不安全的源代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM