Язык

Object.Wait Метод

Определение

Перегрузки

Имя. Описание
Wait()

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

Wait(Int64)

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

Wait(Int64, Int32)

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

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

См. также

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

Wait(Int64)

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

максимальное время ожидания в миллисекундах

Атрибуты

Исключения

Значение if millis .

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

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

Комментарии

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

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

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

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

См. также

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

Wait(Int64, Int32)

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

Атрибуты

Исключения

If millis , nanos или nanos > 999999.

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

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

Комментарии

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

Текущий поток должен иметь блокировку монитора этого объекта. #notify notify Ознакомьтесь с методом описания способов, с помощью которых поток может стать владельцем блокировки монитора.

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

Затем поток var T/var< становится отключенным для целей планирования потоков и находится в неактивном состоянии до тех пор, пока не произойдет одно из следующих действий: >ul<>li<Некоторый другой поток вызывает > метод для этого объекта и поток <var>Tnotify/var< может быть произвольно выбран в качестве потока, который будет проснут.><> <li>Некоторые другие потоки notifyAll вызывают метод для этого объекта. <li>Некоторые другие потоки Thread#interrupt() прерывают поток <var>T</var>. <li>Указанное количество в режиме реального времени истекло, больше или меньше. Объем в режиме реального времени в наносекундах определяется выражением 1000000 * timeoutMillis + nanos. Если timeoutMillis и nanos оба равно нулю, то в режиме реального времени не учитывается, и поток ожидает, пока не проснется одной из других причин. <li>Thread <var>T</var> пробуждается спровождающе. (См. ниже.) </ul>

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

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

Дополнительные сведения об этом разделе см. в разделе 14.2, "Очереди условий", в Брайане Goetz и других <>эм Java параллелизм в практике</em> (Addison-Wesley, 2006) или Item 69 в Joshua Blockh <em>Effective Java, Second Edition</em> (Addison-Wesley, 2008).

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

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

Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".

См. также

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