Java 高并发十: JDK8对并发的新支持详解
和AtomicLong类似的使用方式,但是性能比AtomicLong更好。但是LongAdder在AtomicLong的基础上进行了热点分离,热点分离类似于有锁操作中的减小锁粒度,将一个锁分离成若干个锁来提高性能。LongAdder原理图:AtomicLong的实现方式是内部有个value 变量,当多线程并发自增,自减时,均通过CAS 指令从机器指令级别操作保证并发的原子性。唯一会制约AtomicLong高效的原因是高并发,高并发意味着CAS的失败几率更高, 重试次数更多,越多线程重试,CAS失败几率又越高,变成恶性循环,AtomicLong效率降低。LongAdder是一种以空间换时间的策略。而StampedLock则是ReadWriteLock的一个改进。如果有写线程在写,或者 stamp数值不同,则返回失败。当一个线程试图获得锁时,取得当前等待队列的尾部节点作为其前序节点。
下载地址
用户评论