Java - CAS 總結

CAS 介紹

CAS 操作包含三個操作數——內存位置(V)、預期原值(A)和新值(B)。 如果內存位置的值與預期原值相匹配,那麼處理器會自動將該位置值更新爲新值 ,否則處理器不做任何操作。

Java 併發包

JUC 併發包中原子類,都存放在 java.util.concurrent.atomic 類路徑下。

Unsafe 類

Unsafe 是位於 sun.misc 包下的一個類,Unsafe 提供了CAS 方法,直接通過 native 方式調用了底層的 CPU 指令。

CAS 缺點

1、ABA 問題。JDK 提供了兩個類 AtomicStampedReference、AtomicMarkableReference 來解決 ABA 問題。
2、只能保證一個共享變量的原子操作。規避方法爲:使用 AtomicReference 把多個共享變量合併成一個共享變量來操作。
3、循環時間長開銷大。高併發下 N 多線程同時去操作一個變量,會造成大量線程 CAS 失敗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章