Java并发工具类LongAdder原理实例解析
LongAdder实现原理图 高并发下N多线程同时去操作一个变量会造成大量线程CAS失败,然后处于自旋状态,导致严重浪费CPU资源,降低了并发性。 LongAdder维护了要给延迟初始化的原子性更新数组和一个基值变量base数组的大小保持是2的N次方大小,数组表的下标使用每个线程的hashcode值的掩码表示,数组里面的变量实体是Cell类型。 java.util.concurrency.atomic.LongAdder是Java8新增的一个类,提供了原子累计值的方法。CAS 本质上是由现代CPU在硬件级实现的原子指令,允许进行无阻塞,多线程的数据操作同时兼顾了安全性以及效率。核心的思想就是将AtomicLong一个value的更新压力分散到多个value中去,从而降低更新热点。
用户评论