LongAdder

概述

AtomicLong 只对一个 Long 值进行 CAS 操作。而 LongAdder 是针对 Cell 数组的某个 Cell 进行 CAS 操作 ,把线程的名字的 hash 值,作为 Cell 数组的下标,然后对 Cell[i] 的 long 进行 CAS 操作。简单粗暴的分散了高并发下的竞争压力

内核

cell对象使用@sun.misc.Contended避免伪共享

升级竞争的解决方案

参考

https://xilidou.com/2018/11/27/LongAdder/