2020-10-18:java中LongAdder和AtomicLong有什么區別?#福大大架構師每日一題#
uj5u.com熱心網友回復:
AtomicLong :AtomicLong 是基于 CAS 方式自旋更新的。唯一會制約AtomicLong高效的原因是高并發,高并發意味著CAS的失敗幾率更高, 重試次數更多,越多執行緒重試,CAS失敗幾率又越高,變成惡性回圈,AtomicLong效率降低。AtomicLong 包含有原子性的讀、寫結合的api。LongAdder:LongAdder 是把 value 分成若干cell,并發量低的時候,直接 CAS 更新值,成功即結束。并發量高的情況,CAS更新某個cell值和需要時對cell資料擴容,成功結束;更新失敗自旋 CAS 更新 cell值。取值的時候,呼叫 sum() 方法進行每個cell累加。LongAdder 沒有原子性的讀、寫結合的api,能保證結果最終一致性。
uj5u.com熱心網友回復:
大佬,總結到位!uj5u.com熱心網友回復:
AtomicLong是CAS操作。LongAdder是多個單元操作。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/179145.html
標籤:Java相關
上一篇:請教為什么要設定環境變數?
下一篇:創建物件的問題
