模块  java.base

Class DoubleAdder

  • 实现的所有接口
    Serializable

    public class DoubleAdderextends Numberimplements Serializable
    一个或多个变量一起保持最初为零的总和为double 当跨线程争用更新(方法add(double) )时,变量集可以动态增长以减少争用。 方法sum() (或等效地, doubleValue() )返回保持总和的变量的当前总和。 线程内或线程之间的累积顺序无法保证。 因此,如果需要数值稳定性,则该类可能不适用,尤其是在组合基本上不同数量级的值时。

    当多个线程更新公共值时,此类通常优于备选方案,该公共值用于诸如经常更新但读取频率较低的摘要统计信息之类的目的。

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

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

      • DoubleAdder

        public DoubleAdder()
        创建一个初始总和为零的新加法器。
    • 方法详细信息

      • add

        public void add​(double x)
        添加给定值。
        参数
        x - 要添加的值
      • sum

        public double sum()
        返回当前总和。 返回的值不是原子快照; 在没有并发更新的情况下调用会返回准确的结果,但是在计算总和时发生的并发更新可能不会合并。 此外,由于浮点运算不是严格关联的,因此返回的结果不必与在单个变量的连续系列更新中获得的值相同。
        结果
        总和
      • reset

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

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

        public double doubleValue()
        相当于 sum()
        Specified by:
        doubleValueNumber
        结果
        总和
      • longValue

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

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

        public float floatValue()
        在缩小基元转换后,将 sum()作为 float返回。
        Specified by:
        floatValue在类 Number
        结果
        the numeric value represented by this object after conversion to type float.