- java.lang.Object
-
- java.lang.Number
-
- java.util.concurrent.atomic.LongAccumulator
-
- All Implemented Interfaces:
-
Serializable
public class LongAccumulator extends Number implements Serializable
一个或多个变量,它们一起保持运行long使用所提供的功能更新值。 当跨线程争用更新(方法accumulate(long))时,该变量集可以动态增长以减少争用。 方法get()(或等效地,longValue())返回维护更新的变量的当前值。当多线程更新用于收集统计信息,而不是细粒度同步控制的常用值时,此类通常优于
AtomicLong。 在低更新争议下,这两类具有相似的特征。 但是,在高度争议的情况下,这一类的预期吞吐量明显高于牺牲更高的空间消耗。线程内或跨线程的累积顺序不能得到保证,不能依赖,所以此类仅适用于积累顺序无关的功能。 提供的累加器功能应该是无效的,因为尝试的更新由于线程之间的争用而失败时可能会被重新应用。 该函数应用当前值作为其第一个参数,给定的更新作为第二个参数。 例如,要保持最大值的运行,您可以提供
Long::max以及Long.MIN_VALUE作为身份。LongAdder类提供了类别的维护计数和总和的常见特殊情况的这一类的功能。 电话new LongAdder()相当于new LongAccumulator((x, y) -> x + y, 0L)。该类扩展
Number,但不定义诸如方法equals,hashCode和compareTo,因为实例预计将发生突变,所以不如收集钥匙有用。- 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 LongAccumulator(LongBinaryOperator accumulatorFunction, long identity)使用给定的累加器函数和identity元素创建一个新的实例。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 voidaccumulate(long x)具有给定值的更新。doubledoubleValue()在扩展原始转换后,返回 current value作为double。floatfloatValue()在扩展原始转换后,返回 current value作为float。longget()返回当前值。longgetThenReset()intintValue()在缩小原始转换后,返回 current value作为int。longlongValue()相当于get()。voidreset()重置维持更新到标识值的变量。StringtoString()返回当前值的String表示形式。-
Methods inherited from class java.lang.Number
byteValue, shortValue
-
-
-
-
构造方法详细信息
-
LongAccumulator
public LongAccumulator(LongBinaryOperator accumulatorFunction, long identity)
使用给定的累加器函数和identity元素创建一个新的实例。- 参数
-
accumulatorFunction- 两个参数的无副作用函数 -
identity- 累加器函数的标识(初始值)
-
-
方法详细信息
-
accumulate
public void accumulate(long x)
具有给定值的更新。- 参数
-
x- 值
-
get
public long get()
返回当前值。 返回的值不是原子快照; 在没有并发更新的情况下调用返回一个准确的结果,但是在计算该值时发生的并发更新可能未被并入。- 结果
- 当前值
-
reset
public void reset()
重置维持更新到标识值的变量。 此方法可能是创建新更新程序的有用替代方法,但仅在没有并发更新时才有效。 因为这个方法本质上是racy,所以只有当已知没有线程同时更新时才应该使用它。
-
getThenReset
public long getThenReset()
- 结果
- 复位前的值
-
intValue
public int intValue()
在缩小原始转换后,返回 current value作为int。
-
floatValue
public float floatValue()
在扩展原始转换后,返回 current value作为float。- Specified by:
-
floatValue在Number - 结果
-
该对象在转换为
float型之后表示的数值。
-
doubleValue
public double doubleValue()
在扩展原始转换后,返回 current value作为double。- Specified by:
-
doubleValue在Number - 结果
-
该对象在转换为
double之后表示的数值。
-
-