简介:
Striped64 是一个高并发累加器,是一个abstract class (包局部抽象类,同一个包才能访问),只能通过它的子类使用(LongAdder,LongAccumulator,DobleAdder,DobleAccumulator),适用于并发冲突频率高的场景
与 JUC.Atomic 系列比较(AtomicLong 等):
内存:Striped64 当发生并发冲突的时候,会产生一个Cell[],占用内存 比 Atomic 大
性能:并发冲突高时,Striped64 把CAS失败的线程分配到Cell[] 槽中进行累加,尽可能的让下一次累加不会产生冲突,所以性能高于Atomic
功能:Atomic支持返回当前累加后的值
代码分析:
发生并发冲突后,线程通过取余(getProbe() 【thread随机数】 & ce