簡體   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