LongAdder 与 AtomicLong有什么区别?

LongAdder 与 AtomicLong有什么区别?

  • AtomicLong 是基于 CAS 方式自旋更新的;LongAdder 是把 value 分成若干cell,并发量低的时候,直接 CAS 更新值,成功即结束。并发量高的情况,CAS更新某个cell值和需要时对cell数据扩容,成功结束;更新失败自旋 CAS 更新 cell值。取值的时候,调用 sum() 方法进行每个cell累加。

  • AtomicLong 包含有原子性的读、写结合的api;LongAdder 没有原子性的读、写结合的api,能保证结果最终一致性。
  • 低并发场景AtomicLong 和 LongAdder 性能相似,高并发场景 LongAdder 性能优于 AtomicLong。

 

参考:
LongAdder源码分析:https://www.jianshu.com/p/ec045c38ef0c
LongAdder和AtomicLong性能对比:https://www.cnblogs.com/itbac/p/10545064.html

 

收藏、分享最有参考价值的编程信息 

博客 [ ConstXiong ]

公众号 [ ConstXiong ]

LongAdder 与 AtomicLong有什么区别?_第1张图片

 

 

你可能感兴趣的:(自做,Java,面试题)