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() |
このロックの解放を試みます。
|
protected ReadLock(ReentrantReadWriteLock lock)
lock - 外部のロック・オブジェクトNullPointerException - lockがnullの場合public void lock()
書込みロックが別のスレッドにより保持されていない場合は、読込みロックを取得してただちに復帰します。
書込みロックが別のスレッドにより保持されている場合、現在のスレッドはスレッドのスケジューリングに関して無効になり、読込みロックが取得されるまで待機します。
public void lockInterruptibly()
throws InterruptedException
書込みロックが別のスレッドにより保持されていない場合は、読込みロックを取得してただちに復帰します。
書込みロックが別のスレッドにより保持されている場合、現在のスレッドはスレッドのスケジューリングに関して無効になり、次の2つのいずれかが起きるまで待機します。
現在のスレッドで、
InterruptedExceptionがスローされ、現在のスレッドの割込みステータスがクリアされます。
このメソッドは明示的な割込みポイントであるため、この実装では、通常または再入可能なロック取得への割り込みへの応答に高い優先度が与えられます。
lockInterruptibly、インタフェースLockInterruptedException - 現在のスレッドで割込みが発生した場合public boolean tryLock()
別のスレッドが書込みロックを保持していない場合に読込みロックを取得し、値trueでただちに復帰します。 このロックが公平順序付けポリシーを使用するように設定されている場合でも、ロックが使用可能であれば、ほかのスレッドが現在読込みロックを待機しているかどうかには関係なく、tryLock()の呼出しによってその読込みロックがただちに取得されます。 この「バージ」(barging)動作により公平性が失われるとは言え、これは特定の状況下で有用です。 このロックの公平性設定を尊重する場合は、ほぼ等価なtryLock(0, TimeUnit.SECONDS) を使用します(これも割込みを検出する)。
書込みロックが別のスレッドによって保持されている場合、このメソッドはただちに値falseで復帰します。
public boolean tryLock(long timeout,
TimeUnit unit)
throws InterruptedException
別のスレッドが書込みロックを保持していない場合に読込みロックを取得し、値trueでただちに復帰します。 このロックが公平順序付けポリシーを使用するように設定されていても、ほかのスレッドがロックを待機している場合は、使用可能なロックは取得されません。 これは、tryLock()メソッドとは対照的です。 公平ロックに対するバージを許可しない、時間設定されたtryLockを使用する場合は、時間設定と非時間設定の両形式を組み合わせて使用します。
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}
書込みロックが別のスレッドにより保持されている場合、現在のスレッドはスレッドのスケジューリングに関して無効になり、次の3つのいずれかが起きるまで待機します。
読込みロックが取得された場合は、値trueが返されます。
現在のスレッドで、
InterruptedExceptionがスローされ、現在のスレッドの割込みステータスがクリアされます。
指定された待機時間が経過すると、値falseが返されます。 時間がゼロまたはそれより小さい場合、メソッドは待機しません。
このメソッドは明示的な割込みポイントであるため、この実装では、通常または再入可能なロック取得、および待機時間経過レポートへの割り込みに対する応答に高い優先度が与えられます。
tryLock、インタフェースLocktimeout - 読込みロックを待機する時間unit - timeout引数の時間単位trueInterruptedException - 現在のスレッドで割込みが発生した場合NullPointerException - 時間単位がnullの場合public void unlock()
リーダーの数がゼロになった場合、書込みロック試行からロックが利用可能になります。
public Condition newCondition()
ReadLocksが状態をサポートしないため、UnsupportedOperationExceptionをスローします。newCondition、インタフェースLockLockインスタンス用の新規ConditionインスタンスUnsupportedOperationException - 常時 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。