JavaTM Platform
Standard Ed. 6

java.util.concurrent.locks
クラス AbstractQueuedSynchronizer.ConditionObject

java.lang.Object
  上位を拡張 java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject
すべての実装されたインタフェース:
Serializable, Condition
含まれているクラス:
AbstractQueuedSynchronizer

public class AbstractQueuedSynchronizer.ConditionObject
extends Object
implements Condition, Serializable

Lock 実装の基盤として機能する AbstractQueuedSynchronizer の Condition 実装です。

このクラスのメソッドのドキュメントには、Lock および Condition ユーザーから見た動作仕様ではなく、内部機構が記載されています。通常、このクラスのエクスポートされたバージョンには、関連する AbstractQueuedSynchronizer の状態セマンティクスを記述したドキュメントを添付する必要があります。

このクラスは Serializable ですが、すべてのフィールドは一時フィールドであるため、直列化復元された状態では待機者は存在しません。

関連項目:
直列化された形式

コンストラクタの概要
AbstractQueuedSynchronizer.ConditionObject()
          新しい ConditionObject のインスタンスを生成します。
 
メソッドの概要
 void await()
          割り込み可能な状態待機を実装します。
 boolean await(long time, TimeUnit unit)
          時間の指定された状態待機を実装します。
 long awaitNanos(long nanosTimeout)
          時間の指定された状態待機を実装します。
 void awaitUninterruptibly()
          割り込み不可能な状態待機を実装します。
 boolean awaitUntil(Date deadline)
          絶対時間の指定された状態待機を実装します。
protected  Collection<Thread> getWaitingThreads()
          この Condition で待機している可能性のあるスレッドを含むコレクションを返します。
protected  int getWaitQueueLength()
          この状態で待機中のスレッドの推定数を返します。
protected  boolean hasWaiters()
          この状態で待機中のスレッドが存在するかどうかを照会します。
 void signal()
          もっとも長く待機しているスレッドが存在する場合、それをこの状態の待機キューから所有するロックの待機キューに移動します。
 void signalAll()
          すべてのスレッドを、この状態の待機キューから所有するロックの待機キューに移動します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

AbstractQueuedSynchronizer.ConditionObject

public AbstractQueuedSynchronizer.ConditionObject()
新しい ConditionObject のインスタンスを生成します。

メソッドの詳細

signal

public final void signal()
もっとも長く待機しているスレッドが存在する場合、それをこの状態の待機キューから所有するロックの待機キューに移動します。

定義:
インタフェース Condition 内の signal
例外:
IllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()false を返す場合

signalAll

public final void signalAll()
すべてのスレッドを、この状態の待機キューから所有するロックの待機キューに移動します。

定義:
インタフェース Condition 内の signalAll
例外:
IllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()false を返す場合

awaitUninterruptibly

public final void awaitUninterruptibly()
割り込み不可能な状態待機を実装します。
  1. AbstractQueuedSynchronizer.getState() により返されたロック状態を保存する。
  2. 保存済みの状態を引数として AbstractQueuedSynchronizer.release(int) を呼び出す。失敗した場合は、IllegalMonitorStateException をスローする。
  3. 信号が送られるまでブロックする。
  4. 保存済みの状態を引数として特殊なバージョンの AbstractQueuedSynchronizer.acquire(int) を呼び出すことで、取得を再実行する。

定義:
インタフェース Condition 内の awaitUninterruptibly

await

public final void await()
                 throws InterruptedException
割り込み可能な状態待機を実装します。
  1. 現在のスレッドで割り込みが行われた場合は、InterruptedException をスローする。
  2. AbstractQueuedSynchronizer.getState() により返されたロック状態を保存する。
  3. 保存済みの状態を引数として AbstractQueuedSynchronizer.release(int) を呼び出す。失敗した場合は、IllegalMonitorStateException をスローする。
  4. 信号が送信されるか、割り込みが発生するまでブロックする。
  5. 保存済みの状態を引数として特殊なバージョンの AbstractQueuedSynchronizer.acquire(int) を呼び出すことで、取得を再実行する。
  6. ステップ 4 のブロック中に割り込みが発生した場合は、例外をスローする。

定義:
インタフェース Condition 内の await
例外:
InterruptedException - 現在のスレッドで割り込みが発生する (およびスレッド中断の割り込みがサポートされる) 場合

awaitNanos

public final long awaitNanos(long nanosTimeout)
                      throws InterruptedException
時間の指定された状態待機を実装します。
  1. 現在のスレッドで割り込みが行われた場合は、InterruptedException をスローする。
  2. AbstractQueuedSynchronizer.getState() により返されたロック状態を保存する。
  3. 保存済みの状態を引数として AbstractQueuedSynchronizer.release(int) を呼び出す。失敗した場合は、IllegalMonitorStateException をスローする。
  4. 信号が送信されるか、割り込みが発生するか、タイムアウトするまでブロックする。
  5. 保存済みの状態を引数として特殊なバージョンの AbstractQueuedSynchronizer.acquire(int) を呼び出すことで、取得を再実行する。
  6. ステップ 4 のブロック中に割り込みが発生した場合は、InterruptedException をスローする。

定義:
インタフェース Condition 内の awaitNanos
パラメータ:
nanosTimeout - ナノ秒単位の待機時間
戻り値:
このメソッドから戻るまで待機する時間を nanosTimeout 値から引いた推定数。 正の値は、希望する時間だけ待機できるように、このメソッドの以後の呼び出しに対する引数として使用される。ゼロ以下の値は、時間が残っていないことを示す
例外:
InterruptedException - 現在のスレッドで割り込みが発生する (およびスレッド中断の割り込みがサポートされる) 場合

awaitUntil

public final boolean awaitUntil(Date deadline)
                         throws InterruptedException
絶対時間の指定された状態待機を実装します。
  1. 現在のスレッドで割り込みが行われた場合は、InterruptedException をスローする。
  2. AbstractQueuedSynchronizer.getState() により返されたロック状態を保存する。
  3. 保存済みの状態を引数として AbstractQueuedSynchronizer.release(int) を呼び出す。失敗した場合は、IllegalMonitorStateException をスローする。
  4. 信号が送信されるか、割り込みが発生するか、タイムアウトするまでブロックする。
  5. 保存済みの状態を引数として特殊なバージョンの AbstractQueuedSynchronizer.acquire(int) を呼び出すことで、取得を再実行する。
  6. ステップ 4 のブロック中に割り込みが発生した場合は、InterruptedException をスローする。
  7. ステップ 4 のブロック中にタイムアウトした場合は false を返し、そうでない場合は true を返す。

定義:
インタフェース Condition 内の awaitUntil
パラメータ:
deadline - 待機する絶対時間
戻り値:
復帰時に期限が経過している場合は false、そうでない場合は true
例外:
InterruptedException - 現在のスレッドで割り込みが発生する (およびスレッド中断の割り込みがサポートされる) 場合

await

public final boolean await(long time,
                           TimeUnit unit)
                    throws InterruptedException
時間の指定された状態待機を実装します。
  1. 現在のスレッドで割り込みが行われた場合は、InterruptedException をスローする。
  2. AbstractQueuedSynchronizer.getState() により返されたロック状態を保存する。
  3. 保存済みの状態を引数として AbstractQueuedSynchronizer.release(int) を呼び出す。失敗した場合は、IllegalMonitorStateException をスローする。
  4. 信号が送信されるか、割り込みが発生するか、タイムアウトするまでブロックする。
  5. 保存済みの状態を引数として特殊なバージョンの AbstractQueuedSynchronizer.acquire(int) を呼び出すことで、取得を再実行する。
  6. ステップ 4 のブロック中に割り込みが発生した場合は、InterruptedException をスローする。
  7. ステップ 4 のブロック中にタイムアウトした場合は false を返し、そうでない場合は true を返す。

定義:
インタフェース Condition 内の await
パラメータ:
time - 待機する最長時間
unit - time 引数の時間単位
戻り値:
メソッドからの復帰前に待機時間が経過したことが検出された場合は false、そうでない場合は true
例外:
InterruptedException - 現在のスレッドで割り込みが発生する (およびスレッド中断の割り込みがサポートされる) 場合

hasWaiters

protected final boolean hasWaiters()
この状態で待機中のスレッドが存在するかどうかを照会します。AbstractQueuedSynchronizer.hasWaiters(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject) を実装します。

戻り値:
待機中のスレッドが存在する場合は true
例外:
IllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()false を返す場合

getWaitQueueLength

protected final int getWaitQueueLength()
この状態で待機中のスレッドの推定数を返します。AbstractQueuedSynchronizer.getWaitQueueLength(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject) を実装します。

戻り値:
待機中のスレッドの推定数
例外:
IllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()false を返す場合

getWaitingThreads

protected final Collection<Thread> getWaitingThreads()
この Condition で待機している可能性のあるスレッドを含むコレクションを返します。AbstractQueuedSynchronizer.getWaitingThreads(java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject) を実装します。

戻り値:
スレッドのコレクション
例外:
IllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()false を返す場合

JavaTM Platform
Standard Ed. 6

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

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