文章目录
1.概述
先参考使用相关的文档:
【java】阿里为什么推荐使用LongAdder,而不是volatile?
针对JDK中的原子类,想必大家都熟悉AtomicInteger,AtomicLong等类。他们都是采用CAS乐观锁方式来实现的。
但是这种方式是否还有继续优化的空间呢?答案是肯定的。
CAS乐观锁对临界区的数据(也就是atomicLong中的volatile long value属性)进行修改,这个属性是热点数据。并发量高的时候,会出现很多线程都轮询修改value属性的情况,CPU消耗比较高
。
大家在想一下,在秒杀,拍卖,银行转账等业务场景下,可能存在以下情况:大量客户的请求都需要修改某个银行账户的余额。有一种优化策略就是将该银行热点账户拆分为多条记录,将请求hash路由到不同的子账户中进行计算。那么上述Atomic类也可以采用该种策略:热点数据拆分。
这就是阅读源码的作用,可以学习到各种各样的优秀设计,并且可以将其应用到具体的工作之中。