モジュール java.base

クラス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のインスタンスを生成します。
    • メソッドの詳細

      • await

        public final void await()
                         throws InterruptedException
        割込み可能な状態待機を実装します。
        1. 現在のスレッドで割込みが行われた場合は、InterruptedExceptionをスローする。
        2. AbstractQueuedSynchronizer.getState()により返されたロック状態を保存する。
        3. 保存済みの状態を引数としてAbstractQueuedSynchronizer.release(int)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
        4. 信号が送信されるか、割込みが発生するまでブロックする。
        5. 保存済みの状態を引数として特殊なバージョンのAbstractQueuedSynchronizer.acquire(int)を呼び出すことで、取得を再実行する。
        6. ステップ4のブロック中に割込みが発生した場合は、InterruptedExceptionをスローする。
        定義:
        await、インタフェースCondition
        例外:
        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をスローする。
        定義:
        awaitNanos、インタフェースCondition
        パラメータ:
        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を返す。
        定義:
        awaitUntil、インタフェースCondition
        パラメータ:
        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を返す。
        定義:
        await、インタフェースCondition
        パラメータ:
        time - 待機する最長時間
        unit - time引数の時間単位
        戻り値:
        false - メソッドからの復帰前に待機時間が経過したことが検出された場合。そうでない場合はtrue
        例外:
        InterruptedException - 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合