モジュール java.base

クラスAtomicLongFieldUpdater<T>

  • 型パラメータ:
    T - 更新可能なフィールドを保持するオブジェクトの型


    public abstract class AtomicLongFieldUpdater<T>
    extends Object
    指定されたクラスの指定されたvolatile longフィールドの原子更新が可能な、リフレクション・ベースのユーティリティです。 このクラスは、同一ノードの複数フィールドが独立して原子更新の対象になる原子データ構造で使用する目的で設計されています。

    このクラス内のcompareAndSetメソッドの保証は、ほかの原子クラス内のそれよりも弱いことに留意してください。 このクラスは、フィールドの使用すべてが原子アクセスに適していることを保証できないため、同じアップデータでのcompareAndSetおよびsetのほかの呼出しに関してのみ原子性を保証できます。

    newUpdater(java.lang.Class<U>, java.lang.String)に渡されたクラスのインスタンスでない型Tのパラメータのオブジェクト引数がスローされClassCastExceptionになります。

    導入されたバージョン:
    1.5
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected AtomicLongFieldUpdater​()
      サブクラスにより使用される、何も行わないprotectedコンストラクタ。
    • メソッドのサマリー

      すべてのメソッド staticメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      long accumulateAndGet​(T obj, long x, LongBinaryOperator accumulatorFunction)
      このアップ・データによって管理される指定されたオブジェクトのフィールドを、現在および指定された値に指定された関数を適用した結果で更新し、更新された値を返すことを原子的に更新します。
      long addAndGet​(T obj, long delta)
      このアップデータが管理する指定されたオブジェクトのフィールドの現在値に、指定された値を原子的に追加します。
      abstract boolean compareAndSet​(T obj, long expect, long update)
      「現在の値==予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。
      long decrementAndGet​(T obj)
      このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ減分します。
      abstract long get​(T obj)
      このアップデーターによって管理される指定されたオブジェクトのフィールドに保持されている現在の値を返します。
      long getAndAccumulate​(T obj, long x, LongBinaryOperator accumulatorFunction)
      指定された関数を現在の値と指定された値に適用して前の値を返す結果で、このアップ・データによって管理される指定されたオブジェクトのフィールドを非アクティブに更新します。
      long getAndAdd​(T obj, long delta)
      このアップデータが管理する指定されたオブジェクトのフィールドの現在値に、指定された値を原子的に追加します。
      long getAndDecrement​(T obj)
      このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ減分します。
      long getAndIncrement​(T obj)
      このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ増分します。
      long getAndSet​(T obj, long newValue)
      このアップデータにより管理される指定されたオブジェクトのフィールドを指定された値に原始的に設定し、以前の値を返します。
      long getAndUpdate​(T obj, LongUnaryOperator updateFunction)
      このアップ・データで管理されている指定されたオブジェクトのフィールドを、指定された関数を適用した結果で元に戻し、前の値を返すようにアトミックに更新します。
      long incrementAndGet​(T obj)
      このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ増分します。
      abstract void lazySet​(T obj, long newValue)
      このアップデータにより管理される指定されたオブジェクトのフィールドを、指定された更新済みの値に最終的に設定します。
      static <U> AtomicLongFieldUpdater<U> newUpdater​(Class<U> tclass, String fieldName)
      指定されたフィールドを持つオブジェクトのアップデータを作成して返します。
      abstract void set​(T obj, long newValue)
      このアップデータにより管理される指定されたオブジェクトのフィールドを、指定された更新済みの値に設定します。
      long updateAndGet​(T obj, LongUnaryOperator updateFunction)
      このアップ・データによって管理される指定されたオブジェクトのフィールドを、指定された関数を適用した結果で自動的に更新し、更新された値を返します。
      abstract boolean weakCompareAndSet​(T obj, long expect, long update)
      「現在の値==予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。
    • コンストラクタの詳細

      • AtomicLongFieldUpdater

        protected AtomicLongFieldUpdater​()
        サブクラスにより使用される、何も行わないprotectedコンストラクタ。
    • メソッドの詳細

      • newUpdater

        public static <U> AtomicLongFieldUpdater<U> newUpdater​(Class<U> tclass,
                                                               String fieldName)
        指定されたフィールドを持つオブジェクトのアップデータを作成して返します。 Class引数は、リフレクト型とジェネリック型の一致をチェックするために必要です。
        型パラメータ:
        U - tclassのインスタンスの型
        パラメータ:
        tclass - フィールドを保持するオブジェクトのクラス
        fieldName - 更新するフィールドの名前
        戻り値:
        アップデータ
        例外:
        IllegalArgumentException - フィールドが揮発性のlong型ではない場合
        RuntimeException - クラスにフィールドが含まれないかクラスの型が不正な場合、あるいは、呼出し元がJava言語アクセス制御に従ってフィールドにアクセスできない場合は、入れ子にされたリフレクション・ベースの例外がスローされる。
      • compareAndSet

        public abstract boolean compareAndSet​(T obj,
                                              long expect,
                                              long update)
        「現在の値==予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。 このメソッドは、compareAndSetおよびsetに対するほかの呼出しで原子性を持つことが保証されていますが、フィールド内のほかの変更に関しては必ずしもそうであるとは限りません。
        パラメータ:
        obj - 条件付きでフィールドを設定するオブジェクト
        expect - 予想される値
        update - 新しい値
        戻り値:
        成功した場合はtrue
      • weakCompareAndSet

        public abstract boolean weakCompareAndSet​(T obj,
                                                  long expect,
                                                  long update)
        「現在の値==予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。 このメソッドは、compareAndSetおよびsetに対するほかの呼出しで原子性を持つことが保証されていますが、フィールド内のほかの変更に関しては必ずしもそうであるとは限りません。

        見かけ上失敗する可能性があり、順序付け保証を提供しないため、compareAndSetの代わりに使用することはほとんどありません。

        パラメータ:
        obj - 条件付きでフィールドを設定するオブジェクト
        expect - 予想される値
        update - 新しい値
        戻り値:
        成功した場合はtrue
      • set

        public abstract void set​(T obj,
                                 long newValue)
        このアップデータにより管理される指定されたオブジェクトのフィールドを、指定された更新済みの値に設定します。 この操作は、後続のcompareAndSetの呼出しに関しては、揮発性ストアとして動作することが保証されています。
        パラメータ:
        obj - フィールドを設定するオブジェクト
        newValue - 新しい値
      • lazySet

        public abstract void lazySet​(T obj,
                                     long newValue)
        このアップデータにより管理される指定されたオブジェクトのフィールドを、指定された更新済みの値に最終的に設定します。
        パラメータ:
        obj - フィールドを設定するオブジェクト
        newValue - 新しい値
        導入されたバージョン:
        1.6
      • get

        public abstract long get​(T obj)
        このアップデーターによって管理される指定されたオブジェクトのフィールドに保持されている現在の値を返します。
        パラメータ:
        obj - フィールドを取得するオブジェクト
        戻り値:
        現行値
      • getAndSet

        public long getAndSet​(T obj,
                              long newValue)
        このアップデータにより管理される指定されたオブジェクトのフィールドを指定された値に原始的に設定し、以前の値を返します。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        newValue - 新しい値
        戻り値:
        前の値
      • getAndIncrement

        public long getAndIncrement​(T obj)
        このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ増分します。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        戻り値:
        前の値
      • getAndDecrement

        public long getAndDecrement​(T obj)
        このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ減分します。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        戻り値:
        前の値
      • getAndAdd

        public long getAndAdd​(T obj,
                              long delta)
        このアップデータが管理する指定されたオブジェクトのフィールドの現在値に、指定された値を原子的に追加します。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        delta - 追加する値
        戻り値:
        前の値
      • incrementAndGet

        public long incrementAndGet​(T obj)
        このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ増分します。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        戻り値:
        更新された値
      • decrementAndGet

        public long decrementAndGet​(T obj)
        このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ減分します。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        戻り値:
        更新された値
      • addAndGet

        public long addAndGet​(T obj,
                              long delta)
        このアップデータが管理する指定されたオブジェクトのフィールドの現在値に、指定された値を原子的に追加します。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        delta - 追加する値
        戻り値:
        更新された値
      • getAndUpdate

        public final long getAndUpdate​(T obj,
                                       LongUnaryOperator updateFunction)
        このアップ・データで管理されている指定されたオブジェクトのフィールドを、指定された関数を適用した結果で元に戻し、前の値を返すようにアトミックに更新します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        updateFunction - 副作用のない関数
        戻り値:
        前の値
        導入されたバージョン:
        1.8
      • updateAndGet

        public final long updateAndGet​(T obj,
                                       LongUnaryOperator updateFunction)
        このアップ・データによって管理される指定されたオブジェクトのフィールドを、指定された関数を適用した結果で自動的に更新し、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        updateFunction - 副作用のない関数
        戻り値:
        更新された値
        導入されたバージョン:
        1.8
      • getAndAccumulate

        public final long getAndAccumulate​(T obj,
                                           long x,
                                           LongBinaryOperator accumulatorFunction)
        指定された関数を現在の値と指定された値に適用して前の値を返す結果で、このアップ・データによって管理される指定されたオブジェクトのフィールドを非アクティブに更新します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、現在の値を第1引数とし、指定された更新値を第2引数として適用されます。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        x - 更新値
        accumulatorFunction - 2つの引数を取る、副作用のない関数
        戻り値:
        前の値
        導入されたバージョン:
        1.8
      • accumulateAndGet

        public final long accumulateAndGet​(T obj,
                                           long x,
                                           LongBinaryOperator accumulatorFunction)
        このアップ・データによって管理される指定されたオブジェクトのフィールドを、現在および指定された値に指定された関数を適用した結果で更新し、更新された値を返すことを原子的に更新します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、現在の値を第1引数とし、指定された更新値を第2引数として適用されます。
        パラメータ:
        obj - フィールドを取得および設定するオブジェクト
        x - 更新値
        accumulatorFunction - 2つの引数を取る、副作用のない関数
        戻り値:
        更新された値
        導入されたバージョン:
        1.8