java.lang.Object
java.util.concurrent.atomic.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
- 
コンストラクタのサマリーコンストラクタ
- 
メソッドのサマリー修飾子と型メソッド説明longaccumulateAndGet(T obj, long x, LongBinaryOperator accumulatorFunction)このアップ・データによって管理される指定されたオブジェクトのフィールドを、現在および指定された値に指定された関数を適用した結果で更新し、更新された値を返すことを原子的に更新します。longこのアップデータが管理する指定されたオブジェクトのフィールドの現在値に、指定された値を原子的に追加します。abstract booleancompareAndSet(T obj, long expect, long update)「現在の値==予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。longdecrementAndGet(T obj)このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ減分します。abstract longこのアップデーターによって管理される指定されたオブジェクトのフィールドに保持されている現在の値を返します。longgetAndAccumulate(T obj, long x, LongBinaryOperator accumulatorFunction)指定された関数を現在の値と指定された値に適用して前の値を返す結果で、このアップ・データによって管理される指定されたオブジェクトのフィールドを非アクティブに更新します。longこのアップデータが管理する指定されたオブジェクトのフィールドの現在値に、指定された値を原子的に追加します。longgetAndDecrement(T obj)このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ減分します。longgetAndIncrement(T obj)このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ増分します。longこのアップデータにより管理される指定されたオブジェクトのフィールドを指定された値に原始的に設定し、以前の値を返します。longgetAndUpdate(T obj, LongUnaryOperator updateFunction)このアップ・データで管理されている指定されたオブジェクトのフィールドを、指定された関数を適用した結果で元に戻し、前の値を返すようにアトミックに更新します。longincrementAndGet(T obj)このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ増分します。abstract voidこのアップデータにより管理される指定されたオブジェクトのフィールドを、指定された更新済みの値に最終的に設定します。static <U> AtomicLongFieldUpdater<U>newUpdater(Class<U> tclass, String fieldName)指定されたフィールドを持つオブジェクトのアップデータを作成して返します。abstract voidこのアップデータにより管理される指定されたオブジェクトのフィールドを、指定された更新済みの値に設定します。longupdateAndGet(T obj, LongUnaryOperator updateFunction)このアップ・データによって管理される指定されたオブジェクトのフィールドを、指定された関数を適用した結果で自動的に更新し、更新された値を返します。abstract booleanweakCompareAndSet(T obj, long expect, long update)「現在の値==予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。
- 
コンストラクタの詳細- 
AtomicLongFieldUpdaterprotected AtomicLongFieldUpdater()サブクラスにより使用される、何も行わないprotectedコンストラクタ。
 
- 
- 
メソッドの詳細- 
newUpdaterpublic static <U> AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)指定されたフィールドを持つオブジェクトのアップデータを作成して返します。 Class引数は、リフレクト型とジェネリック型の一致をチェックするために必要です。- 型パラメータ:
- U- tclassのインスタンスの型
- パラメータ:
- tclass- フィールドを保持するオブジェクトのクラス
- fieldName- 更新するフィールドの名前
- 戻り値:
- アップデータ
- 例外:
- IllegalArgumentException- フィールドが揮発性のlong型ではない場合
- RuntimeException- クラスにフィールドが含まれないかクラスの型が不正な場合、あるいは、呼出し元がJava言語アクセス制御に従ってフィールドにアクセスできない場合は、入れ子にされたリフレクション・ベースの例外がスローされる。
 
- 
compareAndSetpublic abstract boolean compareAndSet(T obj, long expect, long update)「現在の値==予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。 このメソッドは、compareAndSetおよびsetに対するほかの呼出しで原子性を持つことが保証されていますが、フィールド内のほかの変更に関しては必ずしもそうであるとは限りません。- パラメータ:
- obj- 条件付きでフィールドを設定するオブジェクト
- expect- 予想される値
- update- 新しい値
- 戻り値:
- 成功した場合はtrue
 
- 
weakCompareAndSetpublic abstract boolean weakCompareAndSet(T obj, long expect, long update)「現在の値==予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。 このメソッドは、compareAndSetおよびsetに対するほかの呼出しで原子性を持つことが保証されていますが、フィールド内のほかの変更に関しては必ずしもそうであるとは限りません。この操作は誤って失敗する可能性があり、順序付けの保証は提供されないため、 compareAndSetのかわりに適したものになることはほとんどありません。- パラメータ:
- obj- 条件付きでフィールドを設定するオブジェクト
- expect- 予想される値
- update- 新しい値
- 戻り値:
- 成功した場合はtrue
 
- 
setpublic abstract void set(T obj, long newValue)このアップデータにより管理される指定されたオブジェクトのフィールドを、指定された更新済みの値に設定します。 この操作は、後続のcompareAndSetの呼出しに関しては、揮発性ストアとして動作することが保証されています。- パラメータ:
- obj- フィールドを設定するオブジェクト
- newValue- 新しい値
 
- 
lazySetpublic abstract void lazySet(T obj, long newValue)このアップデータにより管理される指定されたオブジェクトのフィールドを、指定された更新済みの値に最終的に設定します。- パラメータ:
- obj- フィールドを設定するオブジェクト
- newValue- 新しい値
- 導入されたバージョン:
- 1.6
 
- 
getpublic abstract long get(T obj)このアップデーターによって管理される指定されたオブジェクトのフィールドに保持されている現在の値を返します。- パラメータ:
- obj- フィールドを取得するオブジェクト
- 戻り値:
- 現行値
 
- 
getAndSetpublic long getAndSet(T obj, long newValue)このアップデータにより管理される指定されたオブジェクトのフィールドを指定された値に原始的に設定し、以前の値を返します。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- newValue- 新しい値
- 戻り値:
- 前の値
 
- 
getAndIncrementpublic long getAndIncrement(T obj)このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ増分します。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- 戻り値:
- 前の値
 
- 
getAndDecrementpublic long getAndDecrement(T obj)このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ減分します。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- 戻り値:
- 前の値
 
- 
getAndAddpublic long getAndAdd(T obj, long delta)このアップデータが管理する指定されたオブジェクトのフィールドの現在値に、指定された値を原子的に追加します。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- delta- 追加する値
- 戻り値:
- 前の値
 
- 
incrementAndGetpublic long incrementAndGet(T obj)このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ増分します。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- 戻り値:
- 更新された値
 
- 
decrementAndGetpublic long decrementAndGet(T obj)このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に1だけ減分します。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- 戻り値:
- 更新された値
 
- 
addAndGetpublic long addAndGet(T obj, long delta)このアップデータが管理する指定されたオブジェクトのフィールドの現在値に、指定された値を原子的に追加します。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- delta- 追加する値
- 戻り値:
- 更新された値
 
- 
getAndUpdatepublic final long getAndUpdate(T obj, LongUnaryOperator updateFunction)このアップ・データで管理されている指定されたオブジェクトのフィールドを、指定された関数を適用した結果で元に戻し、前の値を返すようにアトミックに更新します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- updateFunction- 副作用のない関数
- 戻り値:
- 前の値
- 導入されたバージョン:
- 1.8
 
- 
updateAndGetpublic final long updateAndGet(T obj, LongUnaryOperator updateFunction)このアップ・データによって管理される指定されたオブジェクトのフィールドを、指定された関数を適用した結果で自動的に更新し、更新された値を返します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- updateFunction- 副作用のない関数
- 戻り値:
- 更新された値
- 導入されたバージョン:
- 1.8
 
- 
getAndAccumulatepublic final long getAndAccumulate(T obj, long x, LongBinaryOperator accumulatorFunction)指定された関数を現在の値と指定された値に適用して前の値を返す結果で、このアップ・データによって管理される指定されたオブジェクトのフィールドを非アクティブに更新します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、現在の値を第1引数とし、指定された更新値を第2引数として適用されます。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- x- 更新値
- accumulatorFunction- 2つの引数を取る、副作用のない関数
- 戻り値:
- 前の値
- 導入されたバージョン:
- 1.8
 
- 
accumulateAndGetpublic final long accumulateAndGet(T obj, long x, LongBinaryOperator accumulatorFunction)このアップ・データによって管理される指定されたオブジェクトのフィールドを、現在および指定された値に指定された関数を適用した結果で更新し、更新された値を返すことを原子的に更新します。 関数は、試行した更新がスレッド間の競合のため失敗したときに再度適用される可能性があるため、副作用を持つべきではありません。 関数は、現在の値を第1引数とし、指定された更新値を第2引数として適用されます。- パラメータ:
- obj- フィールドを取得および設定するオブジェクト
- x- 更新値
- accumulatorFunction- 2つの引数を取る、副作用のない関数
- 戻り値:
- 更新された値
- 導入されたバージョン:
- 1.8
 
 
-