モジュール java.base

クラスReentrantReadWriteLock.ReadLock

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

public static class ReentrantReadWriteLock.ReadLock
extends Object
implements Lock, Serializable
ReentrantReadWriteLock.readLock()メソッドによって返されたロックです。
関連項目:
直列化された形式
  • コンストラクタのサマリー

    コンストラクタ
    修飾子 コンストラクタ 説明
    protected ReadLock​(ReentrantReadWriteLock lock)
    サブクラスにより使用されるコンストラクタです。
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    void lock()
    読込みロックを取得します。
    void lockInterruptibly()
    現在のスレッドに割り込みが発生しないかぎり、読込みロックを取得します。
    Condition newCondition()
    ReadLocksが状態をサポートしないため、UnsupportedOperationExceptionをスローします。
    String toString()
    このロックおよびその状態を識別する文字列を返します。
    boolean tryLock()
    呼出し時に別のスレッドにより書込みロックが保持されていない場合にのみ、読込みロックを取得します。
    boolean tryLock​(long timeout, TimeUnit unit)
    指定された待機時間内に別のスレッドが書込みロックを保持せず、現在のスレッドで割り込みが発生していない場合に、読込みロックを取得します。
    void unlock()
    このロックの解放を試みます。

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

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

    • ReadLock

      protected ReadLock​(ReentrantReadWriteLock lock)
      サブクラスにより使用されるコンストラクタです。
      パラメータ:
      lock - 外部のロック・オブジェクト
      例外:
      NullPointerException - lockがnullの場合
  • メソッドの詳細

    • lock

      public void lock()
      読込みロックを取得します。

      書込みロックが別のスレッドにより保持されていない場合は、読込みロックを取得してただちに復帰します。

      書込みロックが別のスレッドにより保持されている場合、現在のスレッドはスレッドのスケジューリングに関して無効になり、読込みロックが取得されるまで待機します。

      定義:
      lock、インタフェース: Lock
    • lockInterruptibly

      public void lockInterruptibly() throws InterruptedException
      現在のスレッドに割り込みが発生しないかぎり、読込みロックを取得します。

      書込みロックが別のスレッドにより保持されていない場合は、読込みロックを取得してただちに復帰します。

      書込みロックが別のスレッドにより保持されている場合、現在のスレッドはスレッドのスケジューリングに関して無効になり、次の2つのいずれかが起きるまで待機します。

      • 現在のスレッドにより読込みロックが取得される
      • ほかのスレッドが現在のスレッドに割り込みを行う。

      現在のスレッドで、

      • このメソッドへのエントリ上で設定された割込みステータスが保持されるか、
      • 読込みロックの取得中に割り込みが発生した場合、
      InterruptedExceptionがスローされ、現在のスレッドの割込みステータスがクリアされます。

      このメソッドは明示的な割込みポイントであるため、この実装では、通常または再入可能なロック取得への割り込みへの応答に高い優先度が与えられます。

      定義:
      lockInterruptibly、インタフェース: Lock
      例外:
      InterruptedException - 現在のスレッドで割込みが発生した場合
    • tryLock

      public boolean tryLock()
      呼出し時に別のスレッドにより書込みロックが保持されていない場合にのみ、読込みロックを取得します。

      別のスレッドが書込みロックを保持していない場合に読込みロックを取得し、値trueでただちに復帰します。 このロックが公平順序付けポリシーを使用するように設定されている場合でも、ロックが使用可能であれば、ほかのスレッドが現在読込みロックを待機しているかどうかには関係なく、tryLock()の呼出しによってその読込みロックがただちに取得されます この「バージ」(barging)動作により公平性が失われるとは言え、これは特定の状況下で有用です。 このロックの公平性設定を尊重する場合は、ほぼ等価なtryLock(0, TimeUnit.SECONDS)を使用します(これも割込みを検出する)。

      書込みロックが別のスレッドによって保持されている場合、このメソッドはただちに値falseで復帰します。

      定義:
      tryLock、インタフェース: Lock
      戻り値:
      読込みロックが取得された場合はtrue
    • tryLock

      public boolean tryLock​(long timeout, TimeUnit unit) throws InterruptedException
      指定された待機時間内に別のスレッドが書込みロックを保持せず、現在のスレッドで割り込みが発生していない場合に、読込みロックを取得します。

      別のスレッドが書込みロックを保持していない場合に読込みロックを取得し、値trueでただちに復帰します。 このロックが公平順序付けポリシーを使用するように設定されていても、ほかのスレッドがロックを待機している場合は、使用可能なロックは取得されません これは、tryLock()メソッドとは対照的です。 公平ロックに対するバージを許可しない、時間設定されたtryLockを使用する場合は、時間設定と非時間設定の両形式を組み合わせて使用します。

       
       if (lock.tryLock() ||
           lock.tryLock(timeout, unit)) {
         ...
       }

      書込みロックが別のスレッドにより保持されている場合、現在のスレッドはスレッドのスケジューリングに関して無効になり、次の3つのいずれかが起きるまで待機します。

      • 現在のスレッドにより読込みロックが取得される
      • ほかのスレッドが現在のスレッドに割り込みを行う。または
      • 指定された待機時間が経過する。

      読込みロックが取得された場合は、値trueが返されます。

      現在のスレッドで、

      • このメソッドへのエントリ上で設定された割込みステータスが保持されるか、
      • 読込みロックの取得中に割り込みが発生した場合、
      InterruptedExceptionがスローされ、現在のスレッドの割込みステータスがクリアされます。

      指定された待機時間が経過すると、値falseが返されます。 時間がゼロまたはそれより小さい場合、メソッドは待機しません。

      このメソッドは明示的な割込みポイントであるため、この実装では、通常または再入可能なロック取得、および待機時間経過レポートへの割り込みに対する応答に高い優先度が与えられます。

      定義:
      tryLock、インタフェース: Lock
      パラメータ:
      timeout - 読込みロックを待機する時間
      unit - timeout引数の時間単位
      戻り値:
      読込みロックが取得された場合はtrue
      例外:
      InterruptedException - 現在のスレッドで割込みが発生した場合
      NullPointerException - 時間単位がnullの場合
    • unlock

      public void unlock()
      このロックの解放を試みます。

      リーダーの数がゼロになった場合、書込みロック試行からロックが利用可能になります。 現在のスレッドがこのロックを保持しない場合は、IllegalMonitorStateExceptionがスローされます。

      定義:
      unlock、インタフェース: Lock
      例外:
      IllegalMonitorStateException - 現在のスレッドがこのロックを保持していない場合
    • newCondition

      public Condition newCondition()
      ReadLocksが状態をサポートしないため、UnsupportedOperationExceptionをスローします。
      定義:
      newCondition、インタフェース: Lock
      戻り値:
      このLockインスタンス用の新規Conditionインスタンス
      例外:
      UnsupportedOperationException - 常時
    • toString

      public String toString()
      このロックおよびその状態を識別する文字列を返します。 状態は括弧で囲まれ、文字列"Read locks ="に続いて、保持されている読込みロックの数が含まれます。
      オーバーライド:
      toString 、クラス:  Object
      戻り値:
      このロックおよびその状態を識別する文字列