ILock.TryLock メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
| 名前 | 説明 |
|---|---|
| TryLock() |
呼び出し時にロックが解放された場合にのみロックを取得します。 |
| TryLock(Int64, TimeUnit) |
指定された待機時間内に空きがあり、現在のスレッドがスレッド#割り込み中断されていない場合にロックを取得します。 |
TryLock()
呼び出し時にロックが解放された場合にのみロックを取得します。
[Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock();
[<Android.Runtime.Register("tryLock", "()Z", "GetTryLockHandler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : unit -> bool
返品
true ロックが取得され、それ以外の場合は false 場合
- 属性
注釈
呼び出し時にロックが解放された場合にのみロックを取得します。
使用可能な場合はロックを取得し、 true値を使用してすぐに返します。 ロックが使用できない場合、このメソッドは false値を使用してすぐに返されます。
このメソッドの一般的な使用法のイディオムは次のとおりです。
{@code
Lock lock = ...;
if (lock.tryLock()) {
try {
// manipulate protected state
} finally {
lock.unlock();
}
} else {
// perform alternative actions
}}
この使用により、ロックが取得された場合にロックがロック解除され、ロックが取得されなかった場合はロック解除が試行されません。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
適用対象
TryLock(Int64, TimeUnit)
指定された待機時間内に空きがあり、現在のスレッドがスレッド#割り込み中断されていない場合にロックを取得します。
[Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool TryLock(long time, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("tryLock", "(JLjava/util/concurrent/TimeUnit;)Z", "GetTryLock_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.ILockInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member TryLock : int64 * Java.Util.Concurrent.TimeUnit -> bool
パラメーター
- time
- Int64
ロックを待機する最大時間
- unit
- TimeUnit
time引数の時間単位
返品
true ロックが取得され、ロックが取得される前に待機時間が経過した場合に false する場合
- 属性
例外
ロックの取得中に現在のスレッドが中断された場合 (ロックの取得の中断がサポートされます)
注釈
指定された待機時間内に空きがあり、現在のスレッドがスレッド#割り込み中断されていない場合にロックを取得します。
ロックが使用可能な場合、このメソッドは値を trueして直ちに返します。 ロックが使用できない場合、現在のスレッドはスレッド スケジューリングのために無効になり、 <ul><li>現在のスレッドによってロックが取得されるまで休止状態になります。または <li>他のスレッドスレッド#割り込みによって現在のスレッドが中断され、ロックの取得の中断がサポートされます。または <li>指定された待機時間が </ul/ul を経過します。>
ロックが取得されると、 true 値が返されます。
現在のスレッドが<ul><li>このメソッドへのエントリ時に割り込み状態が設定されている場合、またはロックの取得中にスレッド#割り込みが中断<>スレッド#割り込みがサポートされ、ロック取得の中断がサポートされている場合は、</ul>InterruptedExceptionがスローされ、現在のスレッドの中断状態がクリアされます。
指定した待機時間が経過すると、 false 値が返されます。 時間が 0 以下の場合、メソッドはまったく待機しません。
<b>実装に関する考慮事項</b>
一部の実装でロックの取得を中断する機能は不可能であり、可能な場合はコストの高い操作になる可能性があります。 プログラマは、これが当てはまる可能性があることに注意する必要があります。 実装では、その場合に文書化する必要があります。
実装では、通常のメソッドの戻り値に対する割り込みへの応答、またはタイムアウトの報告を優先できます。
Lock実装では、デッドロックの原因となる呼び出しなど、ロックの誤った使用を検出でき、このような状況では (オフの) 例外がスローされる可能性があります。 状況と例外の種類は、その Lock 実装によって文書化する必要があります。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。