Java 8 中 Adder 和 Accumulator 有什么区别?

2021/8/13 12:35:55

本文主要是介绍Java 8 中 Adder 和 Accumulator 有什么区别?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

Adder 的介绍

我们要知道 Adder 和 Accumulator 都是 Java 8 引入的,是相对比较新的类。

对于 Adder 而言,比如最典型的 LongAdder,在高并发下 LongAdder 比 AtomicLong 效率更高,

因为对于 AtomicLong 而言,它只适合用于低并发场景,否则在高并发的场景下,由于 CAS 的冲突概率大,会导致经常自旋,影响整体效率。

而 LongAdder 引入了分段锁的概念,当竞争不激烈的时候,所有线程都是通过 CAS 对同一个 Base 变量进行修改,但是当竞争激烈的时候,LongAdder 会把不同线程对应到不同的 Cell 上进行修改,降低了冲突的概率,从而提高了并发性。

 

Accumulator 的介绍

那么 Accumulator 又是做什么的呢?Accumulator 和 Adder 非常相似,实际上 Accumulator 就是一个更通用版本的 Adder,

比如: LongAccumulator 是 LongAdder 的功能增强版,因为 LongAdder 的 API 只有对数值的加减,而 LongAccumulator 提供了自定义的函数操作。

 



这篇关于Java 8 中 Adder 和 Accumulator 有什么区别?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程