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() |
すべてのスレッドを、この状態の待機キューから所有するロックの待機キューに移動します。
|
public final void signal()
signal、インタフェースConditionIllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合public final void signalAll()
signalAll、インタフェースConditionIllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合public final void awaitUninterruptibly()
AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedSynchronizer.acquire(int)を呼び出すことで、取得を再実行する。
awaitUninterruptibly、インタフェースConditionpublic final void await()
throws InterruptedException
AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedSynchronizer.acquire(int)を呼び出すことで、取得を再実行する。
await、インタフェースConditionInterruptedException - 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合public final long awaitNanos(long nanosTimeout)
throws InterruptedException
AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedSynchronizer.acquire(int)を呼び出すことで、取得を再実行する。
awaitNanos、インタフェースConditionnanosTimeout - ナノ秒単位の待機時間nanosTimeout値から引いた推定数。 正の値は、希望する時間だけ待機できるように、このメソッドの以後の呼出しに対する引数として使用される。 ゼロ以下の値は、時間が残っていないことを示す。 InterruptedException - 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合public final boolean awaitUntil(Date deadline) throws InterruptedException
AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedSynchronizer.acquire(int)を呼び出すことで、取得を再実行する。
awaitUntil、インタフェースConditiondeadline - 待機する絶対時間false - 復帰時に期限が経過している場合。そうでない場合はtrueInterruptedException - 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合public final boolean await(long time,
TimeUnit unit)
throws InterruptedException
AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。
AbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
AbstractQueuedSynchronizer.acquire(int)を呼び出すことで、取得を再実行する。
await、インタフェースConditiontime - 待機する最長時間unit - time引数の時間単位false - メソッドからの復帰前に待機時間が経過したことが検出された場合。そうでない場合はtrueInterruptedException - 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合protected final boolean hasWaiters()
AbstractQueuedSynchronizer.hasWaiters(ConditionObject)を実装します。 trueIllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合protected final int getWaitQueueLength()
AbstractQueuedSynchronizer.getWaitQueueLength(ConditionObject)を実装します。 IllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合protected final Collection<Thread> getWaitingThreads()
AbstractQueuedSynchronizer.getWaitingThreads(ConditionObject)を実装します。 IllegalMonitorStateException - AbstractQueuedSynchronizer.isHeldExclusively()がfalseを返す場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。