Most visited

Recently visited

Added in API level 24

DoubleAccumulator

public class DoubleAccumulator
extends Number implements Serializable

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


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

当多个线程更新用于诸如频繁更新但较少阅读的摘要统计等用途的公共值时,此类通常比替代方案更可取。

提供的累加器函数应该是无副作用的,因为当尝试更新由于线程之间的争用而失败时可能会重新应用。 该函数以当前值作为第一个参数,给定更新作为第二个参数应用。 例如,要保持运行的最大值,您可以提供Double::max以及Double.NEGATIVE_INFINITY作为标识。 不保证线程内部或跨线程的累积顺序。 因此,如果要求数值稳定性,特别是在组合大大不同数量级的数值时,此类可能不适用。

DoubleAdder提供了这个类的功能的类比,用于维持总和的常见特例。 致电new DoubleAdder()相当于new DoubleAccumulator((x, y) -> x + y, 0.0)

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

Summary

Public constructors

DoubleAccumulator(DoubleBinaryOperator accumulatorFunction, double identity)

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

Public methods

void accumulate(double x)

用给定的值更新。

double doubleValue()

相当于 get()

float floatValue()

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

double get()

返回当前值。

double getThenReset()

等同于 get()然后是 reset()

int intValue()

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

long longValue()

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

void reset()

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

String toString()

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

Inherited methods

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

Public constructors

DoubleAccumulator

Added in API level 24
DoubleAccumulator (DoubleBinaryOperator accumulatorFunction, 
                double identity)

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

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

Public methods

accumulate

Added in API level 24
void accumulate (double x)

用给定的值更新。

Parameters
x double: the value

doubleValue

Added in API level 24
double doubleValue ()

相当于 get()

Returns
double the current value

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
double get ()

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

Returns
double the current value

getThenReset

Added in API level 24
double getThenReset ()

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

Returns
double 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 ()

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

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

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!