JavaTM Platform
Standard Ed. 6

java.util.concurrent.atomic
クラス AtomicLongFieldUpdater<T>

java.lang.Object
  上位を拡張 java.util.concurrent.atomic.AtomicLongFieldUpdater<T>
型パラメータ:
T - 更新可能なフィールドを保持するオブジェクトの型

public abstract class AtomicLongFieldUpdater<T>
extends Object

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

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

導入されたバージョン:
1.5

コンストラクタの概要
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)
          「現在の値 == 予想される値」である場合、このアップデータが管理する指定されたオブジェクトのフィールド値を、指定された更新済みの値に原子的に設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

AtomicLongFieldUpdater

protected AtomicLongFieldUpdater()
サブクラスにより使用される、何も行わない protected コンストラクタ。

メソッドの詳細

newUpdater

public static <U> AtomicLongFieldUpdater<U> newUpdater(Class<U> tclass,
                                                       String fieldName)
指定されたフィールドを持つオブジェクトのアップデータを作成して返します。Class 引数は、リフレクト型と総称型の一致をチェックするために必要です。

パラメータ:
tclass - フィールドを保持するオブジェクトのクラス
fieldName - 更新するフィールドの名前
戻り値:
アップデータ
例外:
IllegalArgumentException - フィールドが揮発性の long 型ではない場合
RuntimeException - クラスにフィールドが含まれないか、型が不正な場合に、入れ子にされたリフレクションベースの例外がスローされる

compareAndSet

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

パラメータ:
obj - 条件付きでフィールドを設定するオブジェクト
expect - 予想される値
update - 新しい値
戻り値:
成功する場合は true
例外:
ClassCastException - obj がコンストラクタ内で確立されたフィールドを処理するクラスのインスタンスではない場合

weakCompareAndSet

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

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

パラメータ:
obj - 条件付きでフィールドを設定するオブジェクト
expect - 予想される値
update - 新しい値
戻り値:
成功する場合は true
例外:
ClassCastException - obj がコンストラクタ内で確立されたフィールドを処理するクラスのインスタンスではない場合

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 - 追加する値
戻り値:
更新された値

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。