模块 java.base

类 LongAdder

java.lang.Object
java.lang.Number
java.util.concurrent.atomic.LongAdder
所有已实现的接口:
Serializable

public class LongAdder extends Number implements Serializable
一个或多个变量一起保持初始为零的 long 总和。当更新(方法 add(long) )在线程之间发生争用时,变量集可能会动态增长以减少争用。方法 sum() (或等同于 longValue() )返回维护总和的变量的当前总和。

当多个线程更新用于收集统计信息而不是用于细粒度同步控制的公共总和时,此类通常优于 AtomicLong 。在低更新竞争下,这两个类具有相似的特征。但在高竞争下,此类的预期吞吐量明显更高,但代价是空间消耗更高。

LongAdders 可以与 ConcurrentHashMap 一起使用以维护可缩放的频率图(一种直方图或多重集的形式)。例如,要向 ConcurrentHashMap<String,LongAdder> freqs 添加一个计数,如果不存在则初始化,您可以使用 freqs.computeIfAbsent(key, k -> new LongAdder()).increment();

此类扩展了 Number ,但 not 定义了诸如 equalshashCode compareTo 之类的方法,因为实例预计会发生变异,因此不能用作集合键。

自从:
1.8
参见:
  • 构造方法详细信息

    • 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()
      等效于 sum() 后跟 reset() 。该方法可以应用于例如多线程计算之间的静止点期间。如果有与此方法并发的更新,则返回值not保证是重置前发生的最终值。
      返回:
      总和
    • toString

      public String  toString()
      返回 sum() 的字符串表示形式。
      重写:
      toString 在类 Object
      返回:
      sum() 的字符串表示形式
    • longValue

      public long longValue()
      相当于 sum()
      指定者:
      longValue 在类 Number
      返回:
      总和
    • intValue

      public int intValue()
      在缩小基元转换后将 sum() 作为 int 返回。
      指定者:
      intValue 在类 Number
      返回:
      转换为类型 int 后此对象表示的数值。
    • floatValue

      public float floatValue()
      在扩大基元转换后将 sum() 作为 float 返回。
      指定者:
      floatValue 在类 Number
      返回:
      转换为类型 float 后此对象表示的数值。
    • doubleValue

      public double doubleValue()
      在扩大基元转换后将 sum() 作为 double 返回。
      指定者:
      doubleValue 在类 Number
      返回:
      转换为类型 double 后此对象表示的数值。