T
- 更新可能なフィールドを保持するオブジェクトの型public abstract class AtomicLongFieldUpdater<T> extends Object
volatile long
フィールドの原子更新が可能な、リフレクションベースのユーティリティーです。このクラスは、同一ノードの複数フィールドが独立して原子更新の対象になる原子データ構造で使用する目的で設計されています。
このクラス内の compareAndSet
メソッドの保証は、ほかの原子クラス内のそれよりも弱いことに留意してください。このクラスは、フィールドの使用すべてが原子アクセスに適していることを保証できないため、同じアップデータでの compareAndSet
および set
のほかの呼び出しに関してのみ原子性を保証できます。
修飾子 | コンストラクタと説明 |
---|---|
protected |
AtomicLongFieldUpdater()
サブクラスにより使用される、何も行わない protected コンストラクタ。
|
修飾子と型 | メソッドと説明 |
---|---|
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 |
getAndAdd(T obj, long delta)
このアップデータが管理する指定されたオブジェクトのフィールドの現在値に、指定された値を原子的に追加します。
|
long |
getAndDecrement(T obj)
このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に 1 だけ減分します。
|
long |
getAndIncrement(T obj)
このアップデータが管理する指定されたオブジェクトのフィールドの現在値を原子的に 1 だけ増分します。
|
long |
getAndSet(T obj, long newValue)
このアップデータにより管理される指定されたオブジェクトのフィールドを指定された値に原始的に設定し、以前の値を返します。
|
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)
このアップデータにより管理される指定されたオブジェクトのフィールドを、指定された更新済みの値に設定します。
|
abstract boolean |
weakCompareAndSet(T obj, long expect, long update)
「現在の値
== 予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。 |
protected AtomicLongFieldUpdater()
public static <U> AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass, String fieldName)
tclass
- フィールドを保持するオブジェクトのクラスfieldName
- 更新するフィールドの名前。IllegalArgumentException
- フィールドが揮発性の long 型ではない場合。RuntimeException
- クラスにフィールドが含まれないか、型が不正な場合に、入れ子にされたリフレクションベースの例外がスローされる。public abstract boolean compareAndSet(T obj, long expect, long update)
==
予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。このメソッドは、compareAndSet
および set
に対するほかの呼び出しで原子性を持つことが保証されていますが、フィールド内のほかの変更に関しては必ずしもそうであるとは限りません。obj
- 条件付きでフィールドを設定するオブジェクトexpect
- 予想される値update
- 新しい値ClassCastException
- obj
がコンストラクタ内で確立されたフィールドを処理するクラスのインスタンスではない場合。public abstract boolean weakCompareAndSet(T obj, long expect, long update)
==
予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。このメソッドは、compareAndSet
および set
に対するほかの呼び出しで原子性を持つことが保証されていますが、フィールド内のほかの変更に関しては必ずしもそうであるとは限りません。
見かけ上失敗する可能性があり、順序付け保証を提供しないため、compareAndSet
の代わりに使用することはほとんどありません。
obj
- 条件付きでフィールドを設定するオブジェクトexpect
- 予想される値update
- 新しい値ClassCastException
- obj
がコンストラクタ内で確立されたフィールドを処理するクラスのインスタンスではない場合。public abstract void set(T obj, long newValue)
compareAndSet
の呼び出しに関しては、揮発性ストアとして動作することが保証されています。obj
- フィールドを設定するオブジェクトnewValue
- 新しい値public abstract void lazySet(T obj, long newValue)
obj
- フィールドを設定するオブジェクトnewValue
- 新しい値public abstract long get(T obj)
obj
- フィールドを取得するオブジェクトpublic long getAndSet(T obj, long newValue)
obj
- フィールドを取得および設定するオブジェクトnewValue
- 新しい値public long getAndIncrement(T obj)
obj
- フィールドを取得および設定するオブジェクトpublic long getAndDecrement(T obj)
obj
- フィールドを取得および設定するオブジェクトpublic long getAndAdd(T obj, long delta)
obj
- フィールドを取得および設定するオブジェクトdelta
- 追加する値public long incrementAndGet(T obj)
obj
- フィールドを取得および設定するオブジェクトpublic long decrementAndGet(T obj)
obj
- フィールドを取得および設定するオブジェクトpublic long addAndGet(T obj, long delta)
obj
- フィールドを取得および設定するオブジェクトdelta
- 追加する値 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.