Object.Wait メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
Wait() |
現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。> |
Wait(Int64, Int32) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 |
Wait(Int64) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 |
Wait()
現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。>
[Android.Runtime.Register("wait", "()V", "")]
public void Wait ();
[<Android.Runtime.Register("wait", "()V", "")>]
member this.Wait : unit -> unit
- 属性
例外
このメソッドを呼び出すスレッドがこのオブジェクトのモニターの所有者でない場合は 。
現在のスレッドが中断されている場合は 。 現在のスレッドの中断状態は、例外がスローされる前にクリアされます。
注釈
現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。>
すべての点で、このメソッドは呼び出されたかのように wait(0L, 0)
動作します。 詳細については、 メソッドの #wait(long, int)
仕様を参照してください。
の java.lang.Object.wait()
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
こちらもご覧ください
- Notify()
- NotifyAll()
- Wait(Int64)
- <xref:Java.Lang.Object.Wait(System.Int64%2c+System.Int32)>
- Thread
適用対象
Wait(Int64, Int32)
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。
[Android.Runtime.Register("wait", "(JI)V", "")]
public void Wait (long timeoutMillis, int nanos);
[<Android.Runtime.Register("wait", "(JI)V", "")>]
member this.Wait : int64 * int -> unit
パラメーター
- timeoutMillis
- Int64
待機する最大時間 (ミリ秒単位)
- nanos
- Int32
0 から 999999 までの範囲の追加時間 (ナノ秒単位)
- 属性
例外
の場合 millis
は 。 nanos
または nanos >
999999
。
このメソッドを呼び出すスレッドがこのオブジェクトのモニターの所有者でない場合は 。
現在のスレッドが中断されている場合は 。 現在のスレッドの中断状態は、例外がスローされる前にクリアされます。
注釈
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。
現在のスレッドは、このオブジェクトのモニター ロックを所有している必要があります。 スレッドが #notify notify
モニター ロックの所有者になる方法の説明については、 メソッドを参照してください。
このメソッドを使用すると、現在のスレッド (ここでは <var>T</var> と呼ばれます) が、このオブジェクトの待機セットに自身を配置し、このオブジェクトのすべての同期要求を放棄します。 このオブジェクトのロックのみが放棄されることに注意してください。現在のスレッドが同期される可能性があるその他のオブジェクトは、スレッドが待機している間もロックされたままになります。
その後、スレッド var T/var> はスレッド スケジューリングのために無効になり、次のいずれかが発生するまで休止状態になります。<ul><li>他のスレッドがこのオブジェクトのメソッドをnotify
呼び出し、スレッド <var>T</var> が覚醒するスレッドとして任意に選択されます。<>< <li>他のスレッドは、このオブジェクトの メソッドを notifyAll
呼び出します。 <li>他のいくつかのスレッド Thread#interrupt() はスレッド <var>T</var を割り込みます>。 <li>指定されたリアルタイムの量が経過しました。多かれ少なかれ。 リアルタイムの量 (ナノ秒単位) は、 式 1000000 * timeoutMillis + nanos
によって指定されます。 と nanos
が両方とも 0 の場合timeoutMillis
、リアルタイムは考慮されず、スレッドは他の原因の 1 つによって起動されるまで待機します。 <li>Thread <var>T</var> が誤って覚醒します。 (以下を参照)。 </Ul>
その後、スレッド <var>T</var> は、このオブジェクトの待機セットから削除され、スレッドのスケジュール設定に対して再度有効になります。 通常の方法で他のスレッドと競合し、オブジェクト上で同期する権利があります。オブジェクトの制御が取り戻されると、オブジェクトに対するすべての同期要求は、状態 ante (つまり、メソッドが呼び出された時点 wait
の状況) に復元されます。 スレッド <var>T</var は> 、メソッドの呼び出しからを wait
返します。 したがって、 メソッドから wait
戻ると、オブジェクトとスレッド T
の同期状態は、メソッドが呼び出されたとき wait
とまったく同じになります。
スレッドは、通知を受け取ったり、中断したり、タイムアウトしたりすることなく、いわゆる<>誤ったウェイクアップ</em> を起こすことができます。 これは実際にはめったに発生しませんが、アプリケーションでは、スレッドが起動する原因となった状態をテストし、条件が満たされない場合は待機し続けることによって保護する必要があります。 次の例を見てください。
このトピックの詳細については、Brian Goetz および他のユーザーの <em>Java Concurrency in Practice</em> (Addison-Wesley, 2006) または Joshua Bloch's <em>Effective Java, Second Edition</em> (Addison-Wesley、2008) の項目 69 のセクション 14.2「Condition Queues」を参照してください。
現在のスレッドが待機中または待機中に任意のスレッドによって中断された java.lang.Thread#interrupt() の場合 InterruptedException
は、 がスローされます。 <>この例外がスローされると、現在のスレッドの em 中断状態</em> はクリアされます。 この例外は、上記のようにこのオブジェクトのロック状態が復元されるまでスローされません。
の java.lang.Object.wait(long, int)
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
こちらもご覧ください
- Notify()
- NotifyAll()
- Wait()
- <xref:Java.Lang.Object.Wait(System.Int64%2c+System.Int32)>
- Thread
適用対象
Wait(Int64)
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。
[Android.Runtime.Register("wait", "(J)V", "")]
public void Wait (long timeoutMillis);
[<Android.Runtime.Register("wait", "(J)V", "")>]
member this.Wait : int64 -> unit
パラメーター
- timeoutMillis
- Int64
待機する最大時間 (ミリ秒単位)
- 属性
例外
の場合 millis
は 。
このメソッドを呼び出すスレッドがこのオブジェクトのモニターの所有者でない場合は 。
現在のスレッドが中断されている場合は 。 現在のスレッドの中断状態は、例外がスローされる前にクリアされます。
注釈
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。
すべての点で、このメソッドは呼び出されたかのように wait(timeoutMillis, 0)
動作します。 詳細については、 メソッドの #wait(long, int)
仕様を参照してください。
の java.lang.Object.wait(long)
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
こちらもご覧ください
- Notify()
- NotifyAll()
- Wait()
- <xref:Java.Lang.Object.Wait(System.Int64%2c+System.Int32)>
- Thread