public class DoubleAdder
extends Number
implements Serializable
java.lang.Object | ||
↳ | java.lang.Number | |
↳ | java.util.concurrent.atomic.DoubleAdder |
一个或多个变量,它们共同维持最初的零double
总和。 当更新(方法add(double)
)在线程间竞争时,该组变量可能会动态增长以减少争用。 方法sum()
(或等价地, doubleValue()
)返回当前合计在维持总和的变量上的总和。 不保证线程内部或跨线程的累积顺序。 因此,如果要求数值稳定性,特别是在组合大大不同数量级的数值时,此类可能不适用。
当多个线程更新用于诸如频繁更新但较少阅读的摘要统计等用途的公共值时,此类通常比替代方案更可取。
该类扩展 Number
,但 不定义诸如方法 equals
, hashCode
和 compareTo
,因为实例预计将发生突变,所以不如收集钥匙有用。
Public constructors |
|
---|---|
DoubleAdder() 创建一个初始和为零的新加法器。 |
Public methods |
|
---|---|
void |
add(double x) 添加给定的值。 |
double |
doubleValue() 相当于 |
float |
floatValue() 在缩小原始转换后,将 |
int |
intValue() 在缩小原始转换之后,将 |
long |
longValue() 缩小原始转换后,将 |
void |
reset() 重置将总和保持为零的变量。 |
double |
sum() 返回当前总和。 |
double |
sumThenReset() |
String |
toString() |
Inherited methods |
|
---|---|
From class java.lang.Number
|
|
From class java.lang.Object
|
float floatValue ()
缩小原始转换后,将 sum()
作为 float
返回。
Returns | |
---|---|
float |
the numeric value represented by this object after conversion to type float . |
int intValue ()
在缩小原始转换之后,将 sum()
作为 int
返回。
Returns | |
---|---|
int |
the numeric value represented by this object after conversion to type int . |
long longValue ()
在缩小原始转换之后,将 sum()
作为 long
返回。
Returns | |
---|---|
long |
the numeric value represented by this object after conversion to type long . |
void reset ()
重置将总和保持为零的变量。 此方法可能是创建新加法器的有用替代方法,但只有在没有并发更新时才有效。 由于此方法本质上是活泼的,因此只有在知道没有线程正在同时更新时才应使用它。
double sum ()
返回当前总和。 返回的值不是原子快照; 在没有并发更新的情况下调用会返回准确的结果,但是在计算总和时发生的并发更新可能不会被合并。 另外,因为浮点运算不是严格相关的,所以返回的结果不需要与对单个变量的连续更新中获得的值相同。
Returns | |
---|---|
double |
the sum |
double sumThenReset ()
等同于sum()
然后是reset()
。 这种方法可能适用于多线程计算之间的静态点。 如果有与此方法同时发生的更新,则返回的值不能保证是重置前发生的最终值。
Returns | |
---|---|
double |
the sum |