Most visited

Recently visited

Added in API level 24

LongAccumulator

public class LongAccumulator
extends Number implements Serializable

java.lang.Object
   ↳ java.lang.Number
     ↳ java.util.concurrent.atomic.LongAccumulator


一个或多个变量一起保持使用提供的函数更新的正在运行的long值。 当更新(方法accumulate(long) )在线程间竞争时,该组变量可能会动态增长以减少争用。 方法get() (或等同地, longValue() )通过维护更新的变量返回当前值。

当多线程更新用于收集统计信息等用途的公用值时,此类通常优于AtomicLong ,而不是用于细粒度同步控制。 在低更新争用下,这两个类别具有相似的特征。 但是,在高度争论中,该类别的预期吞吐量显着较高,但以较高的空间消耗为代价。

线程内部或跨线程的积累顺序不能保证,也不能依赖,所以这个类只适用于积累顺序无关紧要的函数。 提供的累加器函数应该是无副作用的,因为当尝试更新由于线程之间的争用而失败时可能会重新应用。 该函数以当前值作为第一个参数,给定更新作为第二个参数应用。 例如,要保持运行的最大值,您可以提供Long::max以及Long.MIN_VALUE作为标识。

LongAdder提供了这个类的功能的类比,用于保持计数和总和的常见特例。 致电new LongAdder()相当于new LongAccumulator((x, y) -> x + y, 0L

该类扩展 Number ,但 定义诸如方法 equalshashCodecompareTo ,因为实例预计将发生突变,所以不如收集钥匙有用。

Summary

Public constructors

LongAccumulator(LongBinaryOperator accumulatorFunction, long identity)

使用给定的累加器函数和标识元素创建一个新实例。

Public methods

void accumulate(long x)

用给定的值更新。

double doubleValue()

在扩大原始转换之后,将 current value作为 double返回。

float floatValue()

在扩展原始转换之后,以 float形式返回 current value

long get()

返回当前值。

long getThenReset()

相当于 get()后跟 reset()

int intValue()

在缩小原始转换之后,将 current value作为 int返回。

long longValue()

相当于 get()

void reset()

重置维护对身份值更新的变量。

String toString()

返回当前值的字符串表示形式。

Inherited methods

From class java.lang.Number
From class java.lang.Object

Public constructors

LongAccumulator

Added in API level 24
LongAccumulator (LongBinaryOperator accumulatorFunction, 
                long identity)

使用给定的累加器函数和标识元素创建一个新实例。

Parameters
accumulatorFunction LongBinaryOperator: a side-effect-free function of two arguments
identity long: identity (initial value) for the accumulator function

Public methods

accumulate

Added in API level 24
void accumulate (long x)

用给定的值更新。

Parameters
x long: the value

doubleValue

Added in API level 24
double doubleValue ()

在扩展原始转换之后,将 current value作为 double返回。

Returns
double the numeric value represented by this object after conversion to type double.

floatValue

Added in API level 24
float floatValue ()

在扩展原始转换之后,将 current value作为 float返回。

Returns
float the numeric value represented by this object after conversion to type float.

get

Added in API level 24
long get ()

返回当前值。 返回的值不是原子快照; 在没有并发更新的情况下调用会返回一个准确的结果,但在计算该值时发生的并发更新可能不会被合并。

Returns
long the current value

getThenReset

Added in API level 24
long getThenReset ()

等同于get()然后是reset() 这种方法可能适用于多线程计算之间的静态点。 如果有与此方法同时发生的更新,则返回的值不能保证是重置前发生的最终值。

Returns
long the value before reset

intValue

Added in API level 24
int intValue ()

在缩小原始转换之后,将 current value作为 int返回。

Returns
int the numeric value represented by this object after conversion to type int.

longValue

Added in API level 24
long longValue ()

相当于 get()

Returns
long the current value

reset

Added in API level 24
void reset ()

重置维护对身份值更新的变量。 此方法可能是创建新更新程序的有用替代方法,但只有在没有并发更新时才有效。 由于此方法本质上是活泼的,因此只有在知道没有线程正在同时更新时才应使用它。

toString

Added in API level 24
String toString ()

返回当前值的字符串表示形式。

Returns
String the String representation of the current value

Hooray!