Language

Object.Wait メソッド

定義

オーバーロード

名前 説明
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

[Android.Runtime.Register("wait", "()V", "")]
public void Wait();
[<Android.Runtime.Register("wait", "()V", "")>]
member this.Wait : unit -> unit
属性

例外

このメソッドを呼び出すスレッドがこのオブジェクトのモニターの所有者でない場合。

現在のスレッドが中断されている場合は 。 現在のスレッドの中断状態は、例外がスローされる前にクリアされます。

注釈

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

すべての点で、このメソッドは、 wait(0L, 0) が呼び出されたかのように動作します。 詳細については、 #wait(long, int) メソッドの仕様を参照してください。

Javaドキュメント。

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

こちらもご覧ください

適用対象

Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</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>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

すべての点で、このメソッドは、 wait(timeoutMillis, 0) が呼び出されたかのように動作します。 詳細については、 #wait(long, int) メソッドの仕様を参照してください。

Javaドキュメント。

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

こちらもご覧ください

適用対象

Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</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>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

現在のスレッドは、このオブジェクトのモニター ロックを所有している必要があります。 スレッドがモニター ロックの所有者になる方法の説明については、 #notify notify メソッドを参照してください。

このメソッドは、現在のスレッド (ここでは <var>T</var>) をこのオブジェクトの待機セットに配置し、このオブジェクトのすべての同期要求を放棄します。 このオブジェクトのロックのみが放棄されることに注意してください。現在のスレッドが同期される可能性がある他のオブジェクトは、スレッドの待機中もロックされたままになります。

スレッド <var>T</var> は、スレッド スケジューリングの目的で無効になり、次のいずれかが発生するまで休止状態になります。 <ul><li>他のスレッドがこのオブジェクトの notify メソッドを呼び出し、スレッド <var>T</var> は、起動するスレッドとして任意に選択されます。 <li>他のスレッドがこのオブジェクトの notifyAll メソッドを呼び出します。 <li>スレッド#interrupt() はスレッド <var>T</var>を割り込みます。 <li>指定されたリアルタイムの量が経過しました。多かれ少なかれ。 ナノ秒単位のリアルタイムの量は、式 1000000 * timeoutMillis + nanosによって指定されます。 timeoutMillisとnanosの両方が 0 の場合、リアルタイムは考慮されず、スレッドは他の原因の 1 つによって目覚めるまで待機します。 <li>Thread <var>T</var> がスプリアスに目覚めます。 (下記参照)。 </ul>

スレッド <var>T</var> はこのオブジェクトの待機セットから削除され、スレッド のスケジュール設定が再度有効になります。 通常の方法で他のスレッドと競合し、オブジェクト上で同期する権限が得られます。オブジェクトの制御が回復すると、オブジェクトに対するすべての同期要求は、状態 ante (つまり、 wait メソッドが呼び出された時点の状況) に復元されます。 スレッド <var>T</var>wait メソッドの呼び出しから返されます。 したがって、 wait メソッドから戻ると、オブジェクトとスレッド T の同期状態は、 wait メソッドが呼び出されたときとまったく同じになります。

スレッドは、通知、中断、またはタイムアウトすることなく、いわゆる <em>不要なウェイクアップ</em>をウェイクアップできます。 これは実際にはめったに発生しませんが、アプリケーションはスレッドを目覚めさせるはずの状態をテストし、条件が満たされていない場合は待機し続けることによって保護する必要があります。 次の例を参照してください。

このトピックの詳細については、セクション 14.2 を参照してください。 Brian Goetz などの <em>Java Concurrency in Practice</em> (Addison-Wesley, 2006) または Item 69 in Joshua Bloch's <em>Effective Java, Second Edition</em> (Addison-Wesley, 2008)。

現在のスレッドが java.lang.Thread#interrupt() の場合、待機中または待機中に任意のスレッドによって中断されると、 InterruptedException がスローされます。 現在のスレッドの <em>中断状態</em> は、この例外がスローされるとクリアされます。 この例外は、上記のようにこのオブジェクトのロック状態が復元されるまでスローされません。

Javaドキュメント。

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

こちらもご覧ください

適用対象