AtomicXXX既出,LongAdder岂非多余?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2559个文字,预计阅读时间需要11分钟。
AtomicXXX,为何有LongAdder?
LongAdder是JDK1.8在java.util.concurrent.atomic包下新引入的,为高并发下实现高性能系统计数器类。它并非AtomicInteger和AtomicLong的替代品,而是提供了更高的性能。
LongAdder通过分段锁的设计,使得多个线程可以同时更新不同的段,从而降低了锁的竞争。这使得它在高并发场景下,相比AtomicInteger和AtomicLong,能提供更高的性能。
既生AtomicXXX,何生LongAdder?
LongAdder是JDK1.8在java.util.concurrent.atomic包下新引入的 为了高并发下实现高性能统计的类。
不是有AtomicInteger 和 AtomicLong嘛,咋还蹦出来个LongAdder???
首先,我们要知道的是,无论是AtomicInteger还是AtomicLong,本质上都是利用CAS的思想,来保证的变量的原子性,虽然说比较好用,但是在高并发环境下,多个线程争夺同一个资源时,如果自旋一直不成功,会一直循环,一直占用CPU,这会极大的浪费CPU资源。
本文共计2559个文字,预计阅读时间需要11分钟。
AtomicXXX,为何有LongAdder?
LongAdder是JDK1.8在java.util.concurrent.atomic包下新引入的,为高并发下实现高性能系统计数器类。它并非AtomicInteger和AtomicLong的替代品,而是提供了更高的性能。
LongAdder通过分段锁的设计,使得多个线程可以同时更新不同的段,从而降低了锁的竞争。这使得它在高并发场景下,相比AtomicInteger和AtomicLong,能提供更高的性能。
既生AtomicXXX,何生LongAdder?
LongAdder是JDK1.8在java.util.concurrent.atomic包下新引入的 为了高并发下实现高性能统计的类。
不是有AtomicInteger 和 AtomicLong嘛,咋还蹦出来个LongAdder???
首先,我们要知道的是,无论是AtomicInteger还是AtomicLong,本质上都是利用CAS的思想,来保证的变量的原子性,虽然说比较好用,但是在高并发环境下,多个线程争夺同一个资源时,如果自旋一直不成功,会一直循环,一直占用CPU,这会极大的浪费CPU资源。

