JavaTM 2 Platform
Standard Ed. 5.0

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

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

public abstract class AtomicIntegerFieldUpdater<T>
extends Object

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

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

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

コンストラクタの概要
protected AtomicIntegerFieldUpdater()
          サブクラスにより使用される、何も行わない protected コンストラクタ。
 
メソッドの概要
 int addAndGet(T obj, int delta)
          現在の値に指定された値を、原子的に追加します。
abstract  boolean compareAndSet(T obj, int expect, int update)
          「現在の値 == 予想される値」である場合、この Updater が管理する、指定されたオブジェクトのフィールド値を原子的に設定します。
 int decrementAndGet(T obj)
          現在の値を 1 だけ原子的に減分します。
abstract  int get(T obj)
          指定されたオブジェクトが保持する、フィールド内の現在値を取得します。
 int getAndAdd(T obj, int delta)
          現在の値に指定された値を、原子的に追加します。
 int getAndDecrement(T obj)
          現在の値を 1 だけ原子的に減分します。
 int getAndIncrement(T obj)
          現在の値を 1 だけ原子的に増分します。
 int getAndSet(T obj, int newValue)
          指定された値に設定して、以前の値を返します。
 int incrementAndGet(T obj)
          現在の値を 1 だけ原子的に増分します。
static
<U> AtomicIntegerFieldUpdater<U>
newUpdater(Class<U> tclass, String fieldName)
          指定されたフィールドを持つオブジェクトのアップデータを作成します。
abstract  void set(T obj, int newValue)
          このアップデータにより管理される、指定されたオブジェクトのフィールドを設定します。
abstract  boolean weakCompareAndSet(T obj, int expect, int update)
          「現在の値 == 予想される値」である場合、この Updater が管理する、指定されたオブジェクトのフィールド値を原子的に設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

AtomicIntegerFieldUpdater

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

メソッドの詳細

newUpdater

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

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

compareAndSet

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

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

weakCompareAndSet

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

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

set

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

パラメータ:
obj - フィールドを設定するオブジェクト
newValue - 新しい値

get

public abstract int get(T obj)
指定されたオブジェクトが保持する、フィールド内の現在値を取得します。

パラメータ:
obj - フィールドを取得するオブジェクト
戻り値:
現在の値

getAndSet

public int getAndSet(T obj,
                     int newValue)
指定された値に設定して、以前の値を返します。

パラメータ:
obj - フィールドを取得および設定するオブジェクト
newValue - 新しい値
戻り値:
前の値

getAndIncrement

public int getAndIncrement(T obj)
現在の値を 1 だけ原子的に増分します。

パラメータ:
obj - フィールドを取得および設定するオブジェクト
戻り値:
前の値

getAndDecrement

public int getAndDecrement(T obj)
現在の値を 1 だけ原子的に減分します。

パラメータ:
obj - フィールドを取得および設定するオブジェクト
戻り値:
前の値

getAndAdd

public int getAndAdd(T obj,
                     int delta)
現在の値に指定された値を、原子的に追加します。

パラメータ:
obj - フィールドを取得および設定するオブジェクト
delta - 追加する値
戻り値:
前の値

incrementAndGet

public int incrementAndGet(T obj)
現在の値を 1 だけ原子的に増分します。

パラメータ:
obj - フィールドを取得および設定するオブジェクト
戻り値:
更新された値

decrementAndGet

public int decrementAndGet(T obj)
現在の値を 1 だけ原子的に減分します。

パラメータ:
obj - フィールドを取得および設定するオブジェクト
戻り値:
更新された値

addAndGet

public int addAndGet(T obj,
                     int delta)
現在の値に指定された値を、原子的に追加します。

パラメータ:
obj - フィールドを取得および設定するオブジェクト
delta - 追加する値
戻り値:
更新された値

JavaTM 2 Platform
Standard Ed. 5.0

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

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