模块  java.base

Class LongAdder

  • 实现的所有接口
    Serializable

    public class LongAdderextends Numberimplements Serializable
    一个或多个变量,它们共同维持最初的零long总和。 当跨线程争用更新(方法add(long) )时,变量集可以动态增长以减少争用。 方法sum() (或等效地, longValue() )返回保持总和的变量的当前总和。

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

    LongAdders可与ConcurrentHashMap一起使用,以维护可扩展的频率图(直方图或多重集的形式)。 例如,要将计数添加到ConcurrentHashMap<String,LongAdder> freqs ,如果尚未初始化,则可以使用freqs.computeIfAbsent(key, k -> new LongAdder()).increment();

    该类扩展Number ,但定义诸如方法equalshashCodecompareTo ,因为实例预计将发生突变,所以不如收集钥匙有用。

    从以下版本开始:
    1.8
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • 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()
        返回当前总和。 返回的值不是原子快照; 在没有并发更新的情况下调用会返回准确的结果,但是在计算总和时发生的并发更新可能不会合并。
        结果
        总和
      • reset

        public void reset()
        重置保持总和为零的变量。 此方法可能是创建新加法器的有用替代方法,但仅在没有并发更新时才有效。 因为这种方法本质上是活泼的,所以只有在知道没有线程同时更新时才应该使用它。
      • sumThenReset

        public long sumThenReset()
        相当于sum()后跟reset() 例如,该方法可以应用于多线程计算之间的静止点。 如果此方法同时存在更新,则不能保证返回的值是重置之前发生的最终值。
        结果
        总和
      • longValue

        public long longValue()
        相当于 sum()
        Specified by:
        longValueNumber
        结果
        总和
      • intValue

        public int intValue()
        在缩小基元转换后,将 sum()作为 int返回。
        Specified by:
        intValueNumber
        结果
        转换为类型 int后此对象表示的数值。
      • floatValue

        public float floatValue()
        在扩展基元转换后,将 sum()作为 float返回。
        Specified by:
        floatValueNumber
        结果
        转换为类型 float后此对象表示的数值。
      • doubleValue

        public double doubleValue()
        在扩展基元转换后,将 sum()作为 double返回。
        Specified by:
        doubleValue ,法课 Number
        结果
        转换为类型 double后此对象表示的数值。