Udemy Course Multithreading, Concurrency & Performance 34
AtomicReference<T>使用方式:
- Constructor: AtomicReference(V initialValue)
- V get(): 回傳當前的V的值
- void set(V newValue): 設定新值
重要的boolean compareAndSet(V 預期的值,V 新的設定值):
- 假設當前的值恰巧等於預期的值,則賦予新的設定值
- 假設當前的值不等於預期的值,則忽略新的設定值
以下簡單範例:
執行得到:
接著改寫,在做compareAndSet前先改值
並且執行得到:
CAS — CompareAndSet
- 存在於所有的Atomic class(像前面提到的AtomicInteger,AtomicLong等)
- 編譯成單一硬體運算(不然就不叫Atomic了!!!)
- 若挖掘一些Atomic Method,會發現背後都實作了CAS