Udemy Course Multithreading, Concurrency & Performance 34

好用的Class — AtomicReference<T>,CAS — CompareAndSet運算

ZONGRU Li
Oct 1, 2021

AtomicReference<T>使用方式:

  1. Constructor: AtomicReference(V initialValue)
  2. V get(): 回傳當前的V的值
  3. void set(V newValue): 設定新值

重要的boolean compareAndSet(V 預期的值,V 新的設定值):

  • 假設當前的值恰巧等於預期的值,則賦予新的設定值
  • 假設當前的值等於預期的值,則忽略新的設定值

以下簡單範例:

執行得到:

接著改寫,在做compareAndSet前先改值

並且執行得到:

CAS — CompareAndSet

  • 存在於所有的Atomic class(像前面提到的AtomicInteger,AtomicLong等)
  • 編譯成單一硬體運算(不然就不叫Atomic了!!!)
  • 若挖掘一些Atomic Method,會發現背後都實作了CAS

參考課程

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet