- すべての実装されたインタフェース:
Serializable,Lock
- 含まれているクラス:
ReentrantReadWriteLock
ReentrantReadWriteLock.readLock()メソッドによって返されたロックです。- 関連項目:
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明voidlock()読込みロックを取得します。void現在のスレッドに割り込みが発生しないかぎり、読込みロックを取得します。ReadLocksが状態をサポートしないため、UnsupportedOperationExceptionをスローします。toString()このロックおよびその状態を識別する文字列を返します。booleantryLock()呼出し時に別のスレッドにより書込みロックが保持されていない場合にのみ、読込みロックを取得します。boolean指定された待機時間内に別のスレッドが書込みロックを保持せず、現在のスレッドで割り込みが発生していない場合に、読込みロックを取得します。voidunlock()このロックの解放を試みます。
-
コンストラクタの詳細
-
ReadLock
protected ReadLock(ReentrantReadWriteLock lock) サブクラスにより使用されるコンストラクタです。- パラメータ:
lock- 外部のロック・オブジェクト- 例外:
NullPointerException- lockがnullの場合
-
-
メソッドの詳細
-
lock
public void 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
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 ="に続いて、保持されている読込みロックの数が含まれます。
-