モジュール java.base

クラスAbstractQueuedLongSynchronizer.ConditionObject

java.lang.Object
java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject
すべての実装されたインタフェース:
Serializable, Condition
含まれているクラス:
AbstractQueuedLongSynchronizer

public class AbstractQueuedLongSynchronizer.ConditionObject extends Object implements Condition, Serializable
Lock実装の基盤として機能するAbstractQueuedLongSynchronizerのCondition実装です。

このクラスのメソッドのドキュメントには、LockおよびConditionユーザーから見た動作仕様ではなく、内部機構が記載されています。 通常、このクラスのエクスポートされたバージョンには、関連付けられたAbstractQueuedLongSynchronizerの状態セマンティックスを記述したドキュメントを添付する必要があります。

このクラスはSerializableですが、すべてのフィールドは一時フィールドであるため、直列化復元された状態では待機者は存在しません。

関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    新しいConditionObjectのインスタンスを生成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    final void
    割込み可能な状態待機を実装します。
    final boolean
    await(long time, TimeUnit unit)
    時間の指定された状態待機を実装します。
    final long
    awaitNanos(long nanosTimeout)
    時間の指定された状態待機を実装します。
    final void
    割込み不可能な状態待機を実装します。
    final boolean
    awaitUntil(Date deadline)
    絶対時間の指定された状態待機を実装します。
    protected final Collection<Thread>
    このConditionで待機している可能性のあるスレッドを含むコレクションを返します。
    protected final int
    この状態で待機中のスレッドの推定数を返します。
    protected final boolean
    この状態で待機中のスレッドが存在するかどうかを照会します。
    final void
    もっとも長く待機しているスレッドが存在する場合、それをこの状態の待機キューから所有するロックの待機キューに移動します。
    final void
    すべてのスレッドを、この状態の待機キューから所有するロックの待機キューに移動します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • ConditionObject

      public ConditionObject()
      新しいConditionObjectのインスタンスを生成します。
  • メソッドの詳細

    • signal

      public final void signal()
      もっとも長く待機しているスレッドが存在する場合、それをこの状態の待機キューから所有するロックの待機キューに移動します。
      定義:
      signal、インタフェース: Condition
      例外:
      IllegalMonitorStateException - AbstractQueuedLongSynchronizer.isHeldExclusively()falseを返す場合
    • signalAll

      public final void signalAll()
      すべてのスレッドを、この状態の待機キューから所有するロックの待機キューに移動します。
      定義:
      signalAll、インタフェース: Condition
      例外:
      IllegalMonitorStateException - AbstractQueuedLongSynchronizer.isHeldExclusively()falseを返す場合
    • awaitUninterruptibly

      public final void awaitUninterruptibly()
      割込み不可能な状態待機を実装します。
      1. AbstractQueuedLongSynchronizer.getState()により返されたロック状態を保存する。
      2. 保存済みの状態を引数としてAbstractQueuedLongSynchronizer.release(long)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
      3. 信号が送られるまでブロックする。
      4. 引数として保存された状態で特殊化されたバージョンのAbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)を起動することにより、再取得します。
      定義:
      awaitUninterruptibly、インタフェース: Condition
    • await

      public final void await() throws InterruptedException
      割込み可能な状態待機を実装します。
      1. 現在のスレッドで割込みが行われた場合は、InterruptedExceptionをスローする。
      2. AbstractQueuedLongSynchronizer.getState()により返されたロック状態を保存する。
      3. 保存済みの状態を引数としてAbstractQueuedLongSynchronizer.release(long)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
      4. 信号が送信されるか、割込みが発生するまでブロックする。
      5. 引数として保存された状態で特殊化されたバージョンのAbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)を起動することにより、再取得します。
      6. ステップ4のブロック中に割込みが発生した場合は、InterruptedExceptionをスローする。
      定義:
      await、インタフェース: Condition
      例外:
      InterruptedException - 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合
    • awaitNanos

      public final long awaitNanos(long nanosTimeout) throws InterruptedException
      時間の指定された状態待機を実装します。
      1. 現在のスレッドで割込みが行われた場合は、InterruptedExceptionをスローする。
      2. AbstractQueuedLongSynchronizer.getState()により返されたロック状態を保存する。
      3. 保存済みの状態を引数としてAbstractQueuedLongSynchronizer.release(long)を呼び出す。失敗した場合は、IllegalMonitorStateExceptionをスローする。
      4. 信号が送信されるか、割込みが発生するか、タイム・アウトするまでブロックする。
      5. 引数として保存された状態で特殊化されたバージョンのAbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)を起動することにより、再取得します。
      6. ステップ4のブロック中に割込みが発生した場合は、InterruptedExceptionをスローする。
      定義:
      awaitNanos、インタフェース: Condition
      パラメータ:
      nanosTimeout - ナノ秒単位の待機時間
      戻り値:
      このメソッドから戻るまで待機する時間をnanosTimeout値から引いた推定数。 正の値は、希望する時間だけ待機できるように、このメソッドの以後の呼出しに対する引数として使用される。 ゼロ以下の値は、時間が残っていないことを示す。
      例外:
      InterruptedException - 現在のスレッドで割込みが発生する(およびスレッド中断の割込みがサポートされる)場合
    • awaitUntil

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

      protected final boolean hasWaiters()
      この状態で待機中のスレッドが存在するかどうかを照会します。 AbstractQueuedLongSynchronizer.hasWaiters(ConditionObject)を実装します。
      戻り値:
      待機中のスレッドが存在する場合はtrue
      例外:
      IllegalMonitorStateException - AbstractQueuedLongSynchronizer.isHeldExclusively()falseを返す場合
    • getWaitQueueLength

      protected final int getWaitQueueLength()
      この状態で待機中のスレッドの推定数を返します。 AbstractQueuedLongSynchronizer.getWaitQueueLength(ConditionObject)を実装します。
      戻り値:
      待機中のスレッドの推定数
      例外:
      IllegalMonitorStateException - AbstractQueuedLongSynchronizer.isHeldExclusively()falseを返す場合
    • getWaitingThreads

      protected final Collection<Thread> getWaitingThreads()
      このConditionで待機している可能性のあるスレッドを含むコレクションを返します。 AbstractQueuedLongSynchronizer.getWaitingThreads(ConditionObject)を実装します。
      戻り値:
      スレッドのコレクション
      例外:
      IllegalMonitorStateException - AbstractQueuedLongSynchronizer.isHeldExclusively()falseを返す場合