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ですが、すべてのフィールドは一時フィールドであるため、直列化復元された状態では待機者は存在しません。
- 関連項目:
- 直列化された形式
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 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()
すべてのスレッドを、この状態の待機キューから所有するロックの待機キューに移動します。
-
コンストラクタの詳細
-
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(int)
を呼び出すことで、取得を再実行する。
- 定義:
awaitUninterruptibly
、インタフェース:Condition
-
await
public final void await() throws InterruptedException割込み可能な状態待機を実装します。- 現在のスレッドで割込みが行われた場合は、InterruptedExceptionをスローする。
AbstractQueuedSynchronizer.getState()
により返されたロック状態を保存する。- 保存済みの状態を引数として
AbstractQueuedSynchronizer.release(int)
を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。 - 信号が送信されるか、割込みが発生するまでブロックする。
- 保存済みの状態を引数として特殊なバージョンの
AbstractQueuedSynchronizer.acquire(int)
を呼び出すことで、取得を再実行する。 - ステップ4のブロック中に割込みが発生した場合は、InterruptedExceptionをスローする。
- 定義:
await
、インタフェース:Condition
- 例外:
InterruptedException
- 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合
-
awaitNanos
public final long awaitNanos(long nanosTimeout) throws InterruptedException時間の指定された状態待機を実装します。- 現在のスレッドで割込みが行われた場合は、InterruptedExceptionをスローする。
AbstractQueuedSynchronizer.getState()
により返されたロック状態を保存する。- 保存済みの状態を引数として
AbstractQueuedSynchronizer.release(int)
を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。 - 信号が送信されるか、割込みが発生するか、タイム・アウトするまでブロックする。
- 保存済みの状態を引数として特殊なバージョンの
AbstractQueuedSynchronizer.acquire(int)
を呼び出すことで、取得を再実行する。 - ステップ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(int)
を呼び出すことで、取得を再実行する。 - ステップ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(int)
を呼び出すことで、取得を再実行する。 - ステップ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
を返す場合
-