ReentrantReadWriteLock.ReentrantWriteLock.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 ロックが解放され、現在のスレッドによって取得された場合、または書き込みロックが現在のスレッドによって既に保持されている場合。 false それ以外の場合は 。

実装

属性

注釈

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

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

現在のスレッドがこのロックを既に保持している場合、保留カウントは 1 ずつインクリメントされ、メソッドは を返します true

ロックが別のスレッドによって保持されている場合、このメソッドは 値 falseを使用して直ちに を返します。

java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock()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 ロックが解放され、現在のスレッドによって取得された場合、または書き込みロックが現在のスレッドによって既に保持されている場合。ロック false を取得する前に待機時間が経過した場合は 。

実装

属性

例外

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

時間単位が null の場合

注釈

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

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

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

現在のスレッドがこのロックを既に保持している場合、保留カウントは 1 ずつインクリメントされ、メソッドは を返します true

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

<ul>

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

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

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

</ul>

書き込みロックが取得された場合、値 true が返され、書き込みロックの保留数が 1 に設定されます。

現在のスレッドの場合:

<ul>

<li>は、このメソッドへの入力時に割り込まれた状態を設定します。

<li>は、書き込みロックの取得中に Thread#interrupt が中断されました。

</ul>

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

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

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

java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock.tryLock(long, java.util.concurrent.TimeUnit)Java ドキュメント。

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

適用対象