ReentrantLock.TryLock メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
TryLock() |
呼び出し時に別のスレッドによって保持されていない場合にのみ、ロックを取得します。 |
TryLock(Int64, TimeUnit) |
特定の待機時間内に別のスレッドによって保持されておらず、現在のスレッドが Thread#割り込み中断されていない場合にロックを取得します。 |
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 ドキュメント java.util.concurrent.locks.ReentrantLock.tryLock()
。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
適用対象
TryLock(Int64, TimeUnit)
特定の待機時間内に別のスレッドによって保持されておらず、現在のスレッドが Thread#割り込み中断されていない場合にロックを取得します。
[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#割り込み中断されていない場合にロックを取得します。
別のスレッドによって保持されていない場合はロックを取得し、 の値 true
を使用して直ちに を返し、ロック保留カウントを 1 に設定します。 このロックが公平な順序付けポリシーを使用するように設定されている場合、他のスレッドがロックを待機している場合、使用可能なロック <em は取得されません<>。> これは、 メソッドとは対照的です #tryLock()
。 フェア ロックのバージを許可する時間 tryLock
指定が必要な場合は、時間指定されたフォームと時間指定されていないフォームを組み合わせます。
{@code
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}}
現在のスレッドがこのロックを既に保持している場合、保留カウントは 1 ずつインクリメントされ、メソッドは を返します true
。
ロックが別のスレッドによって保持されている場合、現在のスレッドはスレッド スケジューリングのために無効になり、次の 3 つのいずれかが発生するまで休止状態になります。
<ul>
<li>ロックは現在のスレッドによって取得されます。
<li>他のいくつかのスレッド Thread#interrupt は、現在のスレッドを中断します。
<li>指定された待機時間が経過する
</ul>
ロックが取得された場合、値 true
が返され、ロック保留数が 1 に設定されます。
現在のスレッドの場合:
<ul>
<li>には、このメソッドへの入力時に中断状態が設定されています。
<li>は、ロックの取得中に Thread#interrupt が中断されます。
<その後InterruptedException
、/ul> がスローされ、現在のスレッドの中断状態がクリアされます。
指定した待機時間が経過すると、値 false
が返されます。 時刻が 0 以下の場合、メソッドはまったく待機しません。
この実装では、このメソッドは明示的な中断ポイントであるため、ロックの通常または再入可能な取得に対する割り込みに応答し、待機時間の経過を報告するよりも優先されます。
の Java ドキュメント java.util.concurrent.locks.ReentrantLock.tryLock(long, java.util.concurrent.TimeUnit)
。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。