- java.lang.Object
-
- java.lang.Number
-
- java.util.concurrent.atomic.DoubleAdder
-
- 实现的所有接口
-
Serializable
public class DoubleAdderextends Numberimplements Serializable
一个或多个变量一起保持最初为零的总和为double
。 当跨线程争用更新(方法add(double)
)时,变量集可以动态增长以减少争用。 方法sum()
(或等效地,doubleValue()
)返回保持总和的变量的当前总和。 线程内或线程之间的累积顺序无法保证。 因此,如果需要数值稳定性,则该类可能不适用,尤其是在组合基本上不同数量级的值时。当多个线程更新公共值时,此类通常优于备选方案,该公共值用于诸如经常更新但读取频率较低的摘要统计信息之类的目的。
该类扩展
Number
,但不定义诸如方法equals
,hashCode
和compareTo
,因为实例预计将发生突变,所以不如收集钥匙有用。- 从以下版本开始:
- 1.8
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 构造器 描述 DoubleAdder()
创建一个初始总和为零的新加法器。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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()
-
声明方法的类 java.lang.Number
byteValue, shortValue
-
-
-
-
方法详细信息
-
add
public void add(double x)
添加给定值。- 参数
-
x
- 要添加的值
-
sum
public double sum()
返回当前总和。 返回的值不是原子快照; 在没有并发更新的情况下调用会返回准确的结果,但是在计算总和时发生的并发更新可能不会合并。 此外,由于浮点运算不是严格关联的,因此返回的结果不必与在单个变量的连续系列更新中获得的值相同。- 结果
- 总和
-
reset
public void reset()
重置保持总和为零的变量。 此方法可能是创建新加法器的有用替代方法,但仅在没有并发更新时才有效。 因为这种方法本质上是活泼的,所以只有在知道没有线程同时更新时才应该使用它。
-
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
.
-
-