java.lang.Object
java.lang.Number
java.util.concurrent.atomic.LongAdder
- 所有已实现的接口:
Serializable
一个或多个变量一起保持初始为零的
long 总和。当更新(方法 add(long) )在线程之间发生争用时,变量集可能会动态增长以减少争用。方法 sum() (或等同于 longValue() )返回维护总和的变量的当前总和。
当多个线程更新用于收集统计信息而不是用于细粒度同步控制的公共总和时,此类通常优于 AtomicLong 。在低更新竞争下,这两个类具有相似的特征。但在高竞争下,此类的预期吞吐量明显更高,但代价是空间消耗更高。
LongAdders 可以与 ConcurrentHashMap 一起使用以维护可缩放的频率图(一种直方图或多重集的形式)。例如,要向 ConcurrentHashMap<String,LongAdder> freqs 添加一个计数,如果不存在则初始化,您可以使用 freqs.computeIfAbsent(key, k -> new LongAdder()).increment();
此类扩展了 Number ,但 not 定义了诸如 equals、hashCode 和 compareTo 之类的方法,因为实例预计会发生变异,因此不能用作集合键。
- 自从:
- 1.8
- 参见:
-
构造方法总结
构造方法 -
方法总结
在类 java.lang.Number 中声明的方法
byteValue, shortValue
-
构造方法详细信息
-
LongAdder
public LongAdder()创建一个初始和为零的新加法器。
-
-
方法详情
-
add
public void add(long x) 添加给定的值。- 参数:
x- 要添加的值
-
increment
public void increment()相当于add(1)。 -
decrement
public void decrement()相当于add(-1)。 -
sum
public long sum()返回当前总和。返回值为NOT一个原子快照;在没有并发更新的情况下调用会返回准确的结果,但在计算总和时发生的并发更新可能不会被合并。- 返回:
- 总和
-
reset
public void reset()重置保持总和为零的变量。此方法可能是创建新加法器的有用替代方法,但仅在没有并发更新时才有效。因为这种方法本质上是活泼的,所以只应在已知没有线程同时更新时使用它。 -
sumThenReset
public long sumThenReset()- 返回:
- 总和
-
toString
返回sum()的字符串表示形式。 -
longValue
public long longValue()相当于sum()。 -
intValue
public int intValue()在缩小基元转换后将sum()作为int返回。 -
floatValue
public float floatValue()在扩大基元转换后将sum()作为float返回。- 指定者:
floatValue在类Number中- 返回:
-
转换为类型
float后此对象表示的数值。
-
doubleValue
public double doubleValue()在扩大基元转换后将sum()作为double返回。- 指定者:
doubleValue在类Number中- 返回:
-
转换为类型
double后此对象表示的数值。
-