2020-10-18:java中LongAdder和AtomicLong有什麼區別?

福哥答案2020-10-18:#福大大架構師每日一題#面試

簡單回答:AtomicLong是CAS操做。LongAdder是多個單元操做。api

中級回答:
AtomicLong 是基於 CAS 方式自旋更新的;LongAdder 是把 value 分紅若干cell,併發量低的時候,直接 CAS 更新值,成功即結束。併發量高的狀況,CAS更新某個cell值和須要時對cell數據擴容,成功結束;更新失敗自旋 CAS 更新 cell值。取值的時候,調用 sum() 方法進行每一個cell累加。
AtomicLong 包含有原子性的讀、寫結合的api;LongAdder 沒有原子性的讀、寫結合的api,能保證結果最終一致性。
低併發場景AtomicLong 和 LongAdder 性能類似,高併發場景 LongAdder 性能優於 AtomicLong。架構

針對自增問題,synchronized、AtomicLong、LongAdder性能比較。這個可能會被面試到。併發


評論高併發

相關文章
相關標籤/搜索