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