クラス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ですが、すべてのフィールドは一時フィールドであるため、直列化復元された状態では待機者は存在しません。
- 導入されたバージョン:
- 1.5
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明final voidawait()割込み可能な状態待機を実装します。final boolean時間の指定された状態待機を実装します。final longawaitNanos(long nanosTimeout) 時間の指定された状態待機を実装します。final void割込み不可能な状態待機を実装します。final booleanawaitUntil(Date deadline) 絶対時間の指定された状態待機を実装します。protected final Collection<Thread> このConditionで待機している可能性のあるスレッドを含むコレクションを返します。protected final intこの状態で待機中のスレッドの推定数を返します。protected final booleanこの状態で待機中のスレッドが存在するかどうかを照会します。final voidsignal()もっとも長く待機しているスレッドが存在する場合、それをこの状態の待機キューから所有するロックの待機キューに移動します。final voidすべてのスレッドを、この状態の待機キューから所有するロックの待機キューに移動します。
-
コンストラクタの詳細
-
ConditionObject
public ConditionObject()新しいConditionObjectのインスタンスを生成します。
-
-
メソッドの詳細
-
signal
public final void signal()もっとも長く待機しているスレッドが存在する場合、それをこの状態の待機キューから所有するロックの待機キューに移動します。- 定義:
signal、インタフェースCondition- スロー:
IllegalMonitorStateException-AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合
-
signalAll
public final void signalAll()すべてのスレッドを、この状態の待機キューから所有するロックの待機キューに移動します。- 定義:
signalAll、インタフェースCondition- スロー:
IllegalMonitorStateException-AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合
-
awaitUninterruptibly
public final void awaitUninterruptibly()割込み不可能な状態待機を実装します。AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。- 保存済みの状態を引数として
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。 - 信号が送られるまでブロックする。
- 引数として保存された状態で特殊化されたバージョンの
AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long)を起動することにより、再取得します。
- 定義:
awaitUninterruptibly、インタフェースCondition
-
await
public final void await() throws InterruptedException割込み可能な状態待機を実装します。- 現在のスレッドで割込みが行われた場合は、InterruptedExceptionをスローする。
AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。- 保存済みの状態を引数として
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。 - 信号が送信されるか、割込みが発生するまでブロックする。
- 引数として保存された状態で特殊化されたバージョンの
AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long)を起動することにより、再取得します。 - ステップ4のブロック中に割込みが発生した場合は、InterruptedExceptionをスローする。
- 定義:
await、インタフェースCondition- スロー:
InterruptedException- 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合
-
awaitNanos
public final long awaitNanos(long nanosTimeout) throws InterruptedException 時間の指定された状態待機を実装します。- 現在のスレッドで割込みが行われた場合は、InterruptedExceptionをスローする。
AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。- 保存済みの状態を引数として
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。 - 信号が送信されるか、割込みが発生するか、タイム・アウトするまでブロックする。
- 引数として保存された状態で特殊化されたバージョンの
AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long)を起動することにより、再取得します。 - ステップ4のブロック中に割込みが発生した場合は、InterruptedExceptionをスローする。
- 定義:
awaitNanos、インタフェースCondition- パラメータ:
nanosTimeout- ナノ秒単位の待機時間- 戻り値:
- このメソッドから戻るまで待機する時間を
nanosTimeout値から引いた推定数。 正の値は、希望する時間だけ待機できるように、このメソッドの以後の呼出しに対する引数として使用される。 ゼロ以下の値は、時間が残っていないことを示す。 - スロー:
InterruptedException- 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合
-
awaitUntil
public final boolean awaitUntil(Date deadline) throws InterruptedException 絶対時間の指定された状態待機を実装します。- 現在のスレッドで割込みが行われた場合は、InterruptedExceptionをスローする。
AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。- 保存済みの状態を引数として
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。 - 信号が送信されるか、割込みが発生するか、タイム・アウトするまでブロックする。
- 引数として保存された状態で特殊化されたバージョンの
AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long)を起動することにより、再取得します。 - ステップ4のブロック中に割込みが発生した場合は、InterruptedExceptionをスローする。
- ステップ4のブロック中にタイム・アウトした場合はfalseを返し、そうでない場合はtrueを返す。
- 定義:
awaitUntil、インタフェースCondition- パラメータ:
deadline- 待機する絶対時間- 戻り値:
false- 復帰時に期限が経過している場合。そうでない場合はtrue- スロー:
InterruptedException- 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合
-
await
public final boolean await(long time, TimeUnit unit) throws InterruptedException 時間の指定された状態待機を実装します。- 現在のスレッドで割込みが行われた場合は、InterruptedExceptionをスローする。
AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。- 保存済みの状態を引数として
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。 - 信号が送信されるか、割込みが発生するか、タイム・アウトするまでブロックする。
- 引数として保存された状態で特殊化されたバージョンの
AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long)を起動することにより、再取得します。 - ステップ4のブロック中に割込みが発生した場合は、InterruptedExceptionをスローする。
- ステップ4のブロック中にタイム・アウトした場合はfalseを返し、そうでない場合はtrueを返す。
- 定義:
await、インタフェースCondition- パラメータ:
time- 待機する最長時間unit-time引数の時間単位- 戻り値:
false- メソッドからの復帰前に待機時間が経過したことが検出された場合。そうでない場合はtrue- スロー:
InterruptedException- 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合
-
hasWaiters
protected final boolean hasWaiters()この状態で待機中のスレッドが存在するかどうかを照会します。AbstractQueuedSynchronizer.hasWaiters(ConditionObject)を実装します。- 戻り値:
- 待機中のスレッドが存在する場合は
true - スロー:
IllegalMonitorStateException-AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合
-
getWaitQueueLength
protected final int getWaitQueueLength()この状態で待機中のスレッドの推定数を返します。AbstractQueuedSynchronizer.getWaitQueueLength(ConditionObject)を実装します。- 戻り値:
- 待機中のスレッドの推定数
- スロー:
IllegalMonitorStateException-AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合
-
getWaitingThreads
protected final Collection<Thread> getWaitingThreads()このConditionで待機している可能性のあるスレッドを含むコレクションを返します。AbstractQueuedSynchronizer.getWaitingThreads(ConditionObject)を実装します。- 戻り値:
- スレッドのコレクション
- スロー:
IllegalMonitorStateException-AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合
-