- java.lang.Object
-
- java.lang.Number
-
- java.util.concurrent.atomic.DoubleAdder
-
- All Implemented Interfaces:
-
Serializable
public class DoubleAdder extends Number implements Serializable
一个或多个变量一起维持起始零点double
和。 当跨线程争用更新(方法add(double)
)时,变量集可以动态增长以减少争用。 方法sum()
(或等效地doubleValue()
)返回保持总和的整个变量组合的当前总和。 线程内或跨线程的累积顺序不能保证。 因此,如果需要数值稳定性,特别是当组合几乎不同数量级的值时,该类可能不适用。当多个线程更新用于诸如经常更新但较不频繁读取的摘要统计信息的常用值时,此类通常优于替代方案。
该类扩展
Number
,但不定义诸如方法equals
,hashCode
和compareTo
,因为实例预计将发生突变,所以不如收集钥匙有用。- 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 DoubleAdder()
创建一个新的加法器,初始和为零。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
add(double x)
添加给定值。double
doubleValue()
相当于sum()
。float
floatValue()
在缩小原始转换后返回sum()
作为float
。int
intValue()
在缩小原始转换后,返回sum()
作为int
。long
longValue()
在缩小原始转换后,返回sum()
作为long
。void
reset()
将保持总和的变量重置为零。double
sum()
返回当前总和。double
sumThenReset()
String
toString()
-
Methods inherited from class java.lang.Number
byteValue, shortValue
-
-
-
-
方法详细信息
-
add
public void add(double x)
添加给定值。- 参数
-
x
- 要添加的值
-
sum
public double sum()
返回当前总和。 返回的值不是原子快照; 在没有并发更新的情况下调用将返回一个准确的结果,但是在计算总和时发生的并发更新可能不会被并入。 另外,因为浮点运算并不是严格的关联性,所以返回的结果不一定等于在单个变量的连续序列更新中获得的值。- 结果
- 总和
-
reset
public void reset()
将保持总和的变量重置为零。 该方法可能是创建新加法器的有用替代方法,但仅在没有并发更新时才有效。 因为这个方法本质上是racy,所以只有当已知没有线程同时更新时才应该使用它。
-
sumThenReset
public double sumThenReset()
- 结果
- 总和
-
doubleValue
public double doubleValue()
相当于sum()
。- Specified by:
-
doubleValue
在Number
- 结果
- 总和
-
longValue
public long longValue()
在缩小原始转换后,返回sum()
作为long
。
-
intValue
public int intValue()
在缩小原始转换后返回sum()
作为int
。
-
floatValue
public float floatValue()
在缩小原始转换后,返回sum()
作为float
。- Specified by:
-
floatValue
在Number
- 结果
-
the numeric value represented by this object after conversion to type
float
.
-
-