|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock
public static class ReentrantReadWriteLock.WriteLock
ReentrantReadWriteLock.writeLock()
メソッドにより返されるロック
コンストラクタの概要 | |
---|---|
protected |
ReentrantReadWriteLock.WriteLock(ReentrantReadWriteLock lock)
サブクラスにより使用されるコンストラクタです。 |
メソッドの概要 | |
---|---|
void |
lock()
書き込みロックを取得します。 |
void |
lockInterruptibly()
現在のスレッドが interrupted でないかぎり、書き込みロックを取得します。 |
Condition |
newCondition()
この Lock インスタンスで使用する Condition インスタンスを返します。 |
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 |
コンストラクタの詳細 |
---|
protected ReentrantReadWriteLock.WriteLock(ReentrantReadWriteLock lock)
lock
- 外部のロックオブジェクト
NullPointerException
- ロックが null の場合メソッドの詳細 |
---|
public void lock()
読み込みロックまたは書き込みロックのいずれも別のスレッドに保持されていない場合、書き込みロックを取得してただちに復帰し、書き込みロックの保持カウントを 1 に設定します。
現在のスレッドが書き込みロックをすでに保持している場合、保持カウントの値を 1 増分して、メソッドをただちに復帰します。
ロックが別のスレッドにより保持されている場合、現在のスレッドがスレッドスケジューリングに関して無効になり、書き込みロックが取得されるまで待機します。ロックが取得されると、書き込みロック保持カウントが 1 に設定されます。
Lock
内の lock
public void lockInterruptibly() throws InterruptedException
interrupted
でないかぎり、書き込みロックを取得します。
読み込みロックまたは書き込みロックのいずれも別のスレッドに保持されていない場合、書き込みロックを取得してただちに復帰し、書き込みロックの保持カウントを 1 に設定します。
現在のスレッドがロックをすでに保持している場合、保持カウントの値を 1 増分して、メソッドをただちに復帰します。
ロックが別のスレッドにより保持されている場合、現在のスレッドはスレッドのスケジューリングに関して無効になり、次の 2 つのいずれかが起きるまで待機します。
割り込み
を行う
書き込みロックが現在のスレッドにより取得された場合、ロック保持カウントが 1 に設定されます。
現在のスレッドで、
割り込み
が発生した場合、
InterruptedException
がスローされ、現在のスレッドの割り込みステータスがクリアされます。
このメソッドは明示的な割り込みポイントであるため、この実装では、通常または再入可能なロック取得への割り込みへの応答に高い優先度が与えられます。
Lock
内の lockInterruptibly
InterruptedException
- 現在のスレッドで割り込みが発生した場合Thread.interrupt()
public boolean tryLock()
別のスレッドにより書き込みロックと読み込みロックのいずれも保持されていない場合に書き込みロックを取得し、値 true でただちに復帰してロックの保持カウントを 1 に設定します。このロックが均等順序付けポリシーを使用するように設定されている場合でも、ロックが使用可能であれば、他のスレッドが現在書き込みロックを待機しているかどうかに関係なく、tryLock() の呼び出しですぐにロックが取得されます。この「バージ」動作により均等性が失われるとは言え、これは特定の状況下で有用です。このロックの均等設定を尊重する場合は、ほぼ等価な tryLock(0, TimeUnit.SECONDS)
を使用します (これも割り込みを検出する)。
現在のスレッドがロックをすでに保持している場合、保持カウントの値が 1 増分され、メソッドは true を返します。
ロックが別のスレッドにより保持されている場合、このメソッドは、値 false でただちに復帰します。
Lock
内の tryLock
public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException
割り込み
が発生していない場合に、書き込みロックを取得します。
別のスレッドが書き込みロックと読み込みロックのいずれも保持していない場合に書き込みロックを取得し、値 true でただちに復帰して、ロック保持カウントを 1 に設定します。このロックが均等順序付けポリシーを使用するように設定されていても、他のスレッドが書き込みロックを待機している場合は、使用可能なロックは取得されません。これは、tryLock()
メソッドとは対照的です。均等ロックに対するバージを許可しない、時間設定された tryLock を使用する場合は、時間設定と非時間設定の両形式を組み合わせて使用します。
if (lock.tryLock() || lock.tryLock(timeout, unit) ) { ... }
現在のスレッドがロックをすでに保持している場合、保持カウントの値が 1 増分され、メソッドは true を返します。
ロックが別のスレッドにより保持されている場合、現在のスレッドはスレッドのスケジューリングに関して無効になり、次の 3 つのいずれかが起きるまで待機します。
割り込み
を行う
書き込みロックが取得された場合、値 true が返され、ロック保持カウントが 1 に設定されます。
現在のスレッドで、
割り込み
が発生した場合、
InterruptedException
がスローされ、現在のスレッドの割り込みステータスがクリアされます。
指定された待機時間が経過すると、値 false が返されます。時間がゼロまたはそれより小さい場合、メソッドは待機しません。
このメソッドは明示的な割り込みポイントであるため、この実装では、通常または再入可能なロック取得、および待機時間経過レポートへの割り込みに対する応答に高い優先度が与えられます。
Lock
内の tryLock
timeout
- 書き込みロックを待機する時間unit
- timeout 引数の時間単位
InterruptedException
- 現在のスレッドで割り込みが発生した場合
NullPointerException
- 単位が null の場合Thread.interrupt()
public void unlock()
現在のスレッドがこのロックのホルダである場合、保持カウントの値が減らされます。保持カウントがゼロになると、ロックが解放されます。現在のスレッドがこのロックのホルダではない場合、IllegalMonitorStateException
がスローされます。
Lock
内の unlock
IllegalMonitorStateException
- 現在のスレッドがこのロックを保持しない場合public Condition newCondition()
Lock
インスタンスで使用する Condition
インスタンスを返します。
返される Condition
インスタンスは、Object
監視メソッド (wait
、notify
、および notifyAll
) を組み込み監視ロックで使用する場合と同じ使用方法をサポートします。
Condition
メソッドの呼び出し時にこの書き込みロックを保持していない場合、IllegalMonitorStateException
がスローされる (読み込みロックは書き込みロックとは独立して保持されるため、チェックされたり影響を受けることはない。ただし、現在のスレッドが読み込みロックも取得している場合に状態待機メソッドを呼び出すことは、それをブロック解除可能な他のスレッドで書き込みロックが取得できなくなってしまうため、常に根本的な誤りである)。
待機
メソッドが呼び出されると、書き込みロックが解放される。その後、書き込みロックが再取得され、ロック保持カウントがメソッドの呼び出し時の状態に復元されてから、メソッドが復帰する。
割り込み
が発生すると、待機は終了し、InterruptedException
がスローされ、スレッドの割り込み状態がクリアされる。
Lock
内の newCondition
public String toString()
Thread.getName()
が含まれます。
Object
内の toString
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。