public class AbstractQueuedLongSynchronizer.ConditionObject extends Object implements Condition, Serializable
Lock
実装の基盤として機能するAbstractQueuedLongSynchronizer
のCondition実装です。
このクラスのメソッドのドキュメントには、LockおよびConditionユーザーから見た動作仕様ではなく、内部機構が記載されています。通常、このクラスのエクスポートされたバージョンには、関連付けられたAbstractQueuedLongSynchronizer
の状態セマンティックスを記述したドキュメントを添付する必要があります。
このクラスは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()
すべてのスレッドを、この状態の待機キューから所有するロックの待機キューに移動します。
|
public final void signal()
signal
、インタフェース: Condition
IllegalMonitorStateException
- AbstractQueuedLongSynchronizer.isHeldExclusively()
がfalse
を返す場合public final void signalAll()
signalAll
、インタフェース: Condition
IllegalMonitorStateException
- AbstractQueuedLongSynchronizer.isHeldExclusively()
がfalse
を返す場合public final void awaitUninterruptibly()
AbstractQueuedLongSynchronizer.getState()
により返されたロック状態を保存する。
AbstractQueuedLongSynchronizer.release(long)
を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedLongSynchronizer.acquire(long)
を呼び出すことで、取得を再実行する。
awaitUninterruptibly
、インタフェース: Condition
public final void await() throws InterruptedException
AbstractQueuedLongSynchronizer.getState()
により返されたロック状態を保存する。
AbstractQueuedLongSynchronizer.release(long)
を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedLongSynchronizer.acquire(long)
を呼び出すことで、取得を再実行する。
await
、インタフェース: Condition
InterruptedException
- 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合public final long awaitNanos(long nanosTimeout) throws InterruptedException
AbstractQueuedLongSynchronizer.getState()
により返されたロック状態を保存する。
AbstractQueuedLongSynchronizer.release(long)
を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedLongSynchronizer.acquire(long)
を呼び出すことで、取得を再実行する。
awaitNanos
、インタフェース: Condition
nanosTimeout
- ナノ秒単位の待機時間nanosTimeout
値から引いた推定数。正の値は、希望する時間だけ待機できるように、このメソッドの以後の呼出しに対する引数として使用される。ゼロ以下の値は、時間が残っていないことを示す。InterruptedException
- 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合public final boolean awaitUntil(Date deadline) throws InterruptedException
AbstractQueuedLongSynchronizer.getState()
により返されたロック状態を保存する。
AbstractQueuedLongSynchronizer.release(long)
を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedLongSynchronizer.acquire(long)
を呼び出すことで、取得を再実行する。
awaitUntil
、インタフェース: Condition
deadline
- 待機する絶対時間false
- 復帰時に期限が経過している場合。そうでない場合はtrue
InterruptedException
- 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合public final boolean await(long time, TimeUnit unit) throws InterruptedException
AbstractQueuedLongSynchronizer.getState()
により返されたロック状態を保存する。
AbstractQueuedLongSynchronizer.release(long)
を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedLongSynchronizer.acquire(long)
を呼び出すことで、取得を再実行する。
await
、インタフェース: Condition
time
- 待機する最長時間unit
- time
引数の時間単位false
- メソッドからの復帰前に待機時間が経過したことが検出された場合。そうでない場合はtrue
InterruptedException
- 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合protected final boolean hasWaiters()
AbstractQueuedLongSynchronizer.hasWaiters(ConditionObject)
を実装します。true
IllegalMonitorStateException
- AbstractQueuedLongSynchronizer.isHeldExclusively()
がfalse
を返す場合protected final int getWaitQueueLength()
AbstractQueuedLongSynchronizer.getWaitQueueLength(ConditionObject)
を実装します。IllegalMonitorStateException
- AbstractQueuedLongSynchronizer.isHeldExclusively()
がfalse
を返す場合protected final Collection<Thread> getWaitingThreads()
AbstractQueuedLongSynchronizer.getWaitingThreads(ConditionObject)
を実装します。IllegalMonitorStateException
- AbstractQueuedLongSynchronizer.isHeldExclusively()
がfalse
を返す場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.