Language

ReentrantReadWriteLock.ReentrantReadLock.TryLock メソッド

定義

オーバーロード

名前 説明
TryLock()

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

TryLock(Int64, TimeUnit)

特定の待機時間内に書き込みロックが別のスレッドによって保持されておらず、現在のスレッドが Thread#interrupt によって中断されていない場合に、読み取りロックを取得します。

TryLock()

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

[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")]
public virtual bool TryLock();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler")>]
abstract member TryLock : unit -> bool
override this.TryLock : unit -> bool

返品

true 読み取りロックが取得された場合

実装

属性

注釈

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

書き込みロックが別のスレッドによって保持されていない場合に読み取りロックを取得し、 true値を使用して直ちに返します。 このロックが公正な順序付けポリシーを使用するように設定されている場合でも、 tryLock()<em>will</em> を呼び出すと、他のスレッドが現在読み取りロックを待機しているかどうかに関係なく、読み取りロックが使用可能な場合は直ちに読み取りロックが取得されます。 この >barging>の動作は、公平性を破る場合でも、特定の状況で役立ちます。 このロックの公平性の設定を尊重する場合は、ほぼ同等の #tryLock(long, TimeUnit) tryLock(0, TimeUnit.SECONDS) を使用します (中断も検出します)。

書き込みロックが別のスレッドによって保持されている場合、このメソッドは false値ですぐに返されます。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象

TryLock(Int64, TimeUnit)

特定の待機時間内に書き込みロックが別のスレッドによって保持されておらず、現在のスレッドが Thread#interrupt によって中断されていない場合に、読み取りロックを取得します。

[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")]
public virtual bool TryLock(long timeout, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
override this.TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool

パラメーター

timeout
Int64

読み取りロックを待機する時間

unit
TimeUnit

タイムアウト引数の時間単位

返品

true 読み取りロックが取得された場合

実装

属性

例外

現在のスレッドが中断された場合

時間単位が null の場合

注釈

特定の待機時間内に書き込みロックが別のスレッドによって保持されておらず、現在のスレッドが Thread#interrupt によって中断されていない場合に、読み取りロックを取得します。

書き込みロックが別のスレッドによって保持されていない場合に読み取りロックを取得し、 true値を使用して直ちに返します。 このロックが公正な順序付けポリシーを使用するように設定されている場合、使用可能なロック <em>は</em> 他のスレッドがロックを待機している場合は取得されません。 これは、 #tryLock() メソッドとは対照的です。 フェア ロックのバージを許可するタイミング tryLock が必要な場合は、時間指定されたフォームと時間指定されていないフォームを組み合わせます。

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

書き込みロックが別のスレッドによって保持されている場合、現在のスレッドはスレッド スケジューリングのために無効になり、次の 3 つのいずれかが発生するまで休止状態になります。

<ul>

<li>読み取りロックは現在のスレッドによって取得されます。

<li>他のスレッドスレッド#割り込みによって現在のスレッドが中断されます。

<li>指定された待機時間が経過します。

</ul>

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

現在のスレッドの場合:

<ul>

<li>このメソッドへのエントリ時に割り込まれた状態が設定されています。

<li>is Thread#interrupt が読み取りロックの取得中に中断されました。

</ul>InterruptedExceptionがスローされ、現在のスレッドの中断状態がクリアされます。

指定した待機時間が経過すると、 false 値が返されます。 時間が 0 以下の場合、メソッドはまったく待機しません。

この実装では、このメソッドは明示的な中断ポイントであるため、ロックの通常または再入可能な取得に対する割り込みに応答し、待機時間の経過を報告するよりも優先されます。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

適用対象