モジュール java.base

クラスDoubleAccumulator

  • すべての実装されたインタフェース:
    Serializable


    public class DoubleAccumulator
    extends Number
    implements Serializable
    指定された関数を使用して更新される処理中のdouble値を一緒に保持する1つ以上の変数。 更新(メソッドaccumulate(double))がスレッド間で競合すると、競合を減らすために変数セットが動的に拡大する場合があります。 メソッドget() (または、等価のdoubleValue())は、更新を保持している変数にまたがる現在の値を返します。

    更新頻度の方が読取り頻度より高いサマリー統計などの目的に使用される共通の値が、複数のスレッドによって更新される場合、通常は代替クラスよりもこのクラスをお薦めします。

    指定されたアキュムレータ関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、現在の値を第1引数とし、指定された更新値を第2引数として適用されます。 たとえば、処理中の最大値を保持するために、Double::maxとともに Double.NEGATIVE_INFINITYを単位元として指定することができます。 スレッド内またはスレッド間での累積の順序は保証されていません。 したがって、数値の安定性が必要な場合、特に、絶対値の次数がかなり異なる値を組み合わせるときは、このクラスは適用できません。

    クラスDoubleAdderは、このクラスの機能に似た、合計を保持するという共通の特殊ケースのための機能を提供します。 new DoubleAdder()呼出しはnew DoubleAccumulator((x, y) -> x + y, 0.0)と等価です。

    このクラスはNumberを拡張しますが、equalshashCode compareToなどのメソッドを定義しません。インスタンスでは変更が想定されているため、コレクション・キーとしては役立たないからです。

    導入されたバージョン:
    1.8
    関連項目:
    直列化された形式
    • コンストラクタの詳細

      • DoubleAccumulator

        public DoubleAccumulator​(DoubleBinaryOperator accumulatorFunction,
                                 double identity)
        指定されたアキュムレータ関数と単位元を使用して、新しいインスタンスを作成します。
        パラメータ:
        accumulatorFunction - 2つの引数を取る、副作用のない関数
        identity - アキュムレータ関数の単位元(初期値)
    • メソッドの詳細

      • accumulate

        public void accumulate​(double x)
        指定された値で更新します。
        パラメータ:
        x - 値
      • get

        public double get​()
        現在の値を返します。 返される値は原子的スナップショットではありません。並行更新がない場合の呼出しでは正確な結果が返されますが、値の計算中に発生した並行更新は組み込まれない可能性があります。
        戻り値:
        現行値
      • reset

        public void reset​()
        更新を保持する変数を単位元値にリセットします。 このメソッドは、新しいアップデータを作成する代わりに利用できますが、並行更新がない場合のみ有効です。 このメソッドは本質的に危ういので、並行して更新を行っているスレッドがないことがわかっている場合のみ使用するようにしてください。
      • getThenReset

        public double getThenReset​()
        get()に続いてreset()を実行した場合と効果は同じです。 たとえば、マルチスレッド計算の間の静止点の期間中に、このメソッドが適用される場合があります。 このメソッドと並行して更新が行われている場合、返される値は、リセット前に発生した最終の値であることは保証されません
        戻り値:
        リセット前の値
      • toString

        public String toString​()
        現在値の文字列表記を返します。
        オーバーライド:
        toString、クラス: Object
        戻り値:
        現在値の文字列表現。
      • doubleValue

        public double doubleValue​()
        get()と等価です。
        定義:
        doubleValue、クラス: Number
        戻り値:
        現行値
      • longValue

        public long longValue​()
        現在の値の縮小プリミティブ変換後の値をlongとして返します。
        定義:
        longValue、クラス: Number
        戻り値:
        このオブジェクトが表す数値をlong型に変換した値。
      • intValue

        public int intValue​()
        現在の値の縮小プリミティブ変換後の値をintとして返します。
        定義:
        intValue、クラス: Number
        戻り値:
        このオブジェクトが表す数値をint型に変換した値。
      • floatValue

        public float floatValue​()
        現在の値の縮小プリミティブ変換後の値をfloatとして返します。
        定義:
        floatValue、クラス: Number
        戻り値:
        このオブジェクトが表す数値をfloat型に変換した値。