ICondition.Await メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
Await() |
現在のスレッドがシグナル通知されるか、Thread#割り込みが中断されるまで待機します。 |
Await(Int64, TimeUnit) |
現在のスレッドがシグナル化または中断されるか、指定された待機時間が経過するまで待機します。 |
Await()
現在のスレッドがシグナル通知されるか、Thread#割り込みが中断されるまで待機します。
[Android.Runtime.Register("await", "()V", "GetAwaitHandler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public void Await ();
[<Android.Runtime.Register("await", "()V", "GetAwaitHandler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member Await : unit -> unit
- 属性
例外
現在のスレッドが中断された場合 (およびスレッド中断の中断がサポートされている)
注釈
現在のスレッドがシグナル通知されるか、Thread#割り込みが中断されるまで待機します。
これにCondition
関連付けられているロックはアトミックに解放され、現在のスレッドはスレッドスケジューリングのために無効になり、4つの><ことが起こるまで<>休止状態になります:<ul<>li>他のスレッドがこのCondition
メソッドを呼び出#signal
し、現在のスレッドが起動するスレッドとして選択されます。または <li>他のスレッドがこの Condition
のメソッドを呼び出#signalAll
す; または li><他のいくつかのスレッド Thread#interrupt は現在のスレッドを中断し、スレッド中断の中断がサポートされています。または <li>A "<em>偽のウェイクアップ</em>" が発生します。 </ul>
いずれの場合も、このメソッドが返される前に、現在のスレッドがこの条件に関連付けられているロックを再取得する必要があります。 スレッドから戻るときに、<>このロックを保持することが em 保証</em> になります。
現在のスレッド: <ul><li>がこのメソッドへのエントリ時に割り込み状態を設定している場合、または <li>が待機中に Thread#interrupt が中断され、スレッド中断の中断がサポートされている場合、/ul> がInterruptedException
スローされ、<現在のスレッドの中断状態がクリアされます。 ロックが解除される前に中断のテストが発生するかどうかは、最初のケースでは指定されていません。
<b>実装に関する考慮事項</b>
現在のスレッドは、このメソッドが呼び出されたときに、これに Condition
関連付けられているロックを保持するものと見なされます。 これが当てはまるかどうか、そうでない場合は応答方法を決定するのは実装次第です。 通常、例外 (など IllegalMonitorStateException
) がスローされ、実装でその事実を文書化する必要があります。
実装では、シグナルに応答して通常のメソッドの戻り値に対する割り込みへの応答を優先できます。 その場合、実装では、シグナルが別の待機スレッド (存在する場合) にリダイレクトされるようにする必要があります。
の Java ドキュメント java.util.concurrent.locks.Condition.await()
。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
適用対象
Await(Int64, TimeUnit)
現在のスレッドがシグナル化または中断されるか、指定された待機時間が経過するまで待機します。
[Android.Runtime.Register("await", "(JLjava/util/concurrent/TimeUnit;)Z", "GetAwait_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")]
public bool Await (long time, Java.Util.Concurrent.TimeUnit? unit);
[<Android.Runtime.Register("await", "(JLjava/util/concurrent/TimeUnit;)Z", "GetAwait_JLjava_util_concurrent_TimeUnit_Handler:Java.Util.Concurrent.Locks.IConditionInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null")>]
abstract member Await : int64 * Java.Util.Concurrent.TimeUnit -> bool
パラメーター
- time
- Int64
最大待機時間
- unit
- TimeUnit
引数の time
時間単位
戻り値
false
メソッドから戻る前に待機時間が検出可能に経過した場合は 、それ以外の場合は true
- 属性
例外
現在のスレッドが中断された場合 (およびスレッド中断の中断がサポートされている)
注釈
現在のスレッドがシグナル化または中断されるか、指定された待機時間が経過するまで待機します。 このメソッドは、次の動作に相当します。
{@code awaitNanos(unit.toNanos(time)) > 0}
の Java ドキュメント java.util.concurrent.locks.Condition.await(long, java.util.concurrent.TimeUnit)
。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。