JavaTM Platform
Standard Ed. 6

java.util.concurrent.locks
クラス 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 ReentrantReadWriteLock.ReadLock(ReentrantReadWriteLock lock)
          サブクラスにより使用されるコンストラクタです。
 
メソッドの概要
 void lock()
          読み込みロックを取得します。
 void lockInterruptibly()
          現在のスレッドが interrupted でない場合、読み込みロックを取得します。
 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
 

コンストラクタの詳細

ReentrantReadWriteLock.ReadLock

protected ReentrantReadWriteLock.ReadLock(ReentrantReadWriteLock lock)
サブクラスにより使用されるコンストラクタです。

パラメータ:
lock - 外部のロックオブジェクト
例外:
NullPointerException - lock が null の場合
メソッドの詳細

lock

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

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

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

定義:
インタフェース Lock 内の lock

lockInterruptibly

public void lockInterruptibly()
                       throws InterruptedException
現在のスレッドが interrupted でない場合、読み込みロックを取得します。

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

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

現在のスレッドで、

InterruptedException がスローされ、現在のスレッドの割り込みステータスがクリアされます。

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

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

tryLock

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

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

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

定義:
インタフェース Lock 内の tryLock
戻り値:
読み込みロックが取得された場合は 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 が返されます。時間がゼロまたはそれより小さい場合、メソッドは待機しません。

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

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

unlock

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

リーダーの数がゼロになった場合、書き込みロック試行からロックが利用可能になります。

定義:
インタフェース Lock 内の unlock

newCondition

public Condition newCondition()
ReadLocks が状態をサポートしないため、UnsupportedOperationException をスローします。

定義:
インタフェース Lock 内の newCondition
戻り値:
この Lock インスタンス用の新規 Condition
例外:
UnsupportedOperationException - always

toString

public String toString()
このロックおよびその状態を識別する文字列を返します。状態は括弧で囲まれ、保持される読み込みロックの数に続く文字列 "Read locks =" が含まれます。

オーバーライド:
クラス Object 内の toString
戻り値:
このロックおよびその状態を識別する文字列

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。