Object.Wait メソッド

定義

オーバーロード

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 ドキュメント。

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

こちらもご覧ください

適用対象

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 ドキュメント。

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

こちらもご覧ください

適用対象

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 ドキュメント。

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

こちらもご覧ください

適用対象