AtomicLong特点:
- AtomicLong底层是基于CAS自旋操作的,如果在高并发的情况下,CPU会花费大量的时间和性能浪费到CAS自旋上面,非常影响CPU的性能(当然并发量小可以忽略不计)。
LongAdder特点:
- LongAdder的特点就是分散热点,把value分成若干个段,底层类似于ConcurrentHashMap中的分段锁,每个线程只对属于自己的“那段”数据进行CAS操作,也就是说,在最理想的情况下,每个线程都有独立的锁,这样可以大量减少并发操作。
总结:
一些高并发的场景,比如限流计数器,建议使用LongAdder替换AtomicLong,性能可以提升不少。
欢迎指正。