Object.Wait Метод

Определение

Перегрузки

Wait()

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

Wait(Int64, Int32)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

Wait(Int64)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

Wait()

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

[Android.Runtime.Register("wait", "()V", "")]
public void Wait ();
[<Android.Runtime.Register("wait", "()V", "")>]
member this.Wait : unit -> unit
Атрибуты

Исключения

Значение , если поток, вызывающий этот метод, не является владельцем монитора этого объекта.

Значение , если текущий поток был прерван. Состояние прерванного текущего потока будет очищено до возникновения исключения.

Комментарии

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

Во всех отношениях этот метод ведет себя так, как если бы wait(0L, 0) он был вызван. Дополнительные сведения см. в спецификации #wait(long, int) метода .

Документация по Java для java.lang.Object.wait().

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

См. также раздел

Применяется к

Wait(Int64, Int32)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>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 до 9999999 включительно

Атрибуты

Исключения

Значение , nanos или nanos > 999999millis .

Значение , если поток, вызывающий этот метод, не является владельцем монитора этого объекта.

Значение , если текущий поток был прерван. Состояние прерванного текущего потока будет очищено до возникновения исключения.

Комментарии

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>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. Если timeoutMillis и nanos равны нулю, то не учитывается реальное время, и поток ожидает пробуждения по одной из других причин. <li>Поток <var>T</var> пробуждается неправильно. (См. ниже.) </Ул>

<Затем поток var>T</var> удаляется из набора ожидания для этого объекта и повторно включается для планирования потоков. Он конкурирует в обычной манере с другими потоками за право синхронизировать на объекте; После восстановления контроля над объектом все его утверждения синхронизации в объекте восстанавливаются в статус-кво ante, т. е. в ситуации на момент wait вызова метода. Затем <поток var>T</var> возвращается из вызова wait метода . Таким образом, при возвращении wait из метода состояние синхронизации объекта и потока T будет точно таким же, как при вызове wait метода.

Поток может проснуться без уведомления, прерывания или истечения времени ожидания, так называемого <>em spurious wakeup</em>. Хотя на практике это происходит редко, приложения должны защищаться от него, проверяя условие, которое должно было вызвать пробуждение потока, и продолжая ждать, если условие не будет выполнено. См. пример ниже.

Дополнительные сведения по этой теме см. в разделе 14.2 , "Условные очереди" в брайана Геца и других <пользователей в>java concurrency in Practice</em> (Addison-Wesley, 2006) или в элементе 69 в Joshua Bloch's <em>Effective Java, Second Edition</em> (Addison-Wesley, 2008).

Если текущим потоком является java.lang.Thread#interrupt(), прерванным каким-либо потоком до или во время ожидания, возникает исключение InterruptedException . >Состояние <прерывания< текущего> потока очищается при возникновении этого исключения. Это исключение не создается до тех пор, пока состояние блокировки этого объекта не будет восстановлено, как описано выше.

Документация по Java для java.lang.Object.wait(long, int).

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

См. также раздел

Применяется к

Wait(Int64)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>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, либо до истечения определенного количества реального времени.

Во всех отношениях этот метод ведет себя так, как если бы wait(timeoutMillis, 0) он был вызван. Дополнительные сведения см. в спецификации #wait(long, int) метода .

Документация по Java для java.lang.Object.wait(long).

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

См. также раздел

Применяется к