Spec-Zone.ru › OpenJDK 17

Класс AbstractQueuedSynchronizer.ConditionObject

java.lang.Object
java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject
Все реализованные интерфейсы:
Serializable, Condition
Вложенный класс:
AbstractQueuedSynchronizer
public class AbstractQueuedSynchronizer.ConditionObject extends Object implements Condition, Serializable
Реализация интерфейса Condition для AbstractQueuedSynchronizer, служащего основой для реализации Lock.

Документация методов этого класса описывает механизм, а не поведенческие спецификации с точки зрения пользователей Lock и Condition. Экспортированные версии этого класса, как правило, должны сопровождаться документацией, описывающей семантику условия, которая опирается на семантику ассоциированного AbstractQueuedSynchronizer.

Этот класс сериализуем, но все поля являются transient, поэтому в десериализованных условиях нет ожидающих потоков.

См. также:
  • Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
ConditionObject()
Создаёт новый экземпляр ConditionObject.

Краткое описание методов

Модификатор и тип Метод Описание
final void await()
Реализует ожидание условия с возможностью прерывания.
final boolean await(long time, TimeUnit unit)
Реализует ожидание условия с таймаутом.
final long awaitNanos(long nanosTimeout)
Реализует ожидание условия с таймаутом.
final void awaitUninterruptibly()
Реализует ожидание условия без возможности прерывания.
final boolean awaitUntil(Date deadline)
Реализует ожидание условия с абсолютным таймаутом.
protected final Collection<Thread> getWaitingThreads()
Возвращает коллекцию, содержащую потоки, которые могут ожидать на этом условии.
protected final int getWaitQueueLength()
Возвращает оценку числа потоков, ожидающих на этом условии.
protected final boolean hasWaiters()
Опрашивает, ожидают ли на этом условии какие-либо потоки.
final void signal()
Перемещает поток, который дольше всего ожидает (если он существует), из очереди ожидания этого условия в очередь ожидания владеющего блокировкой.
final void signalAll()
Перемещает все потоки из очереди ожидания этого условия в очередь ожидания владеющего блокировкой.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

ConditionObject

public ConditionObject()
Создаёт новый ConditionObject экземпляр.

Подробное описание методов

signal

public final void signal()
Перемещает нить с наибольшим временем ожидания (если она существует) из очереди ожидания для этого условия в очередь ожидания для владеющего блокировки.
Определено:
signal в интерфейсе Condition
Исключения:
IllegalMonitorStateException - если AbstractQueuedSynchronizer.isHeldExclusively() возвращает false

signalAll

public final void signalAll()
Перемещает все нити из очереди ожидания для этого условия в очередь ожидания для владеющего блокировки.
Определено:
signalAll в интерфейсе Condition
Исключения:
IllegalMonitorStateException - если AbstractQueuedSynchronizer.isHeldExclusively() возвращает false

awaitUninterruptibly

public final void awaitUninterruptibly()
Реализует беспрепятственное ожидание условия.
  1. Сохранить состояние блокировки, возвращенное методом AbstractQueuedSynchronizer.getState().
  2. Вызвать метод AbstractQueuedSynchronizer.release(int) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException при неудаче.
  3. Заблокироваться до получения сигнала.
  4. Перезаполучить блокировку, вызвав специализированную версию метода AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long) с сохранённым состоянием в качестве аргумента.
Определено:
awaitUninterruptibly в интерфейсе Condition

await

public final void await() throws InterruptedException
Реализует прерывимое ожидание условия.
  1. Если текущая нить прервана, выбросить InterruptedException.
  2. Сохранить состояние блокировки, возвращенное методом AbstractQueuedSynchronizer.getState().
  3. Вызвать метод AbstractQueuedSynchronizer.release(int) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException при неудаче.
  4. Заблокироваться до получения сигнала или прерывания.
  5. Перезаполучить блокировку, вызвав специализированную версию метода AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long) с сохранённым состоянием в качестве аргумента.
  6. Если нить прервана во время блокировки на шаге 4, выбросить InterruptedException.
Определено:
await в интерфейсе Condition
Исключения:
InterruptedException - если текущая нить прервана (и прерывание приостановки нити поддерживается)

awaitNanos

public final long awaitNanos(long nanosTimeout) throws InterruptedException
Реализует ожидание условия с таймером.
  1. Если текущая нить прервана, выбросить InterruptedException.
  2. Сохранить состояние блокировки, возвращенное методом AbstractQueuedSynchronizer.getState().
  3. Вызвать метод AbstractQueuedSynchronizer.release(int) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException при неудаче.
  4. Заблокироваться до получения сигнала, прерывания или истечения времени ожидания.
  5. Перезаполучить блокировку, вызвав специализированную версию метода AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long) с сохранённым состоянием в качестве аргумента.
  6. Если нить прервана во время блокировки на шаге 4, выбросить InterruptedException.
Определено:
awaitNanos в интерфейсе Condition
Параметры:
nanosTimeout - максимальное время ожидания в наносекундах
Возвращает:
оценка значения nanosTimeout минус время, затраченное на ожидание при возврате из этого метода. Положительное значение может быть использовано в качестве аргумента для последующего вызова этого метода для завершения ожидания в течение желаемого времени. Значение меньше или равно нулю указывает на то, что времени не осталось.
Исключения:
InterruptedException - если текущая нить прервана (и прерывание приостановки нити поддерживается)

awaitUntil

public final boolean awaitUntil(Date deadline) throws InterruptedException
Реализует ожидание условия с абсолютным таймером.
  1. Если текущая нить прервана, выбросить InterruptedException.
  2. Сохранить состояние блокировки, возвращенное методом AbstractQueuedSynchronizer.getState().
  3. Вызвать метод AbstractQueuedSynchronizer.release(int) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException при неудаче.
  4. Заблокироваться до получения сигнала, прерывания или истечения времени ожидания.
  5. Перезаполучить блокировку, вызвав специализированную версию метода AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long) с сохранённым состоянием в качестве аргумента.
  6. Если нить прервана во время блокировки на шаге 4, выбросить InterruptedException.
  7. Если время ожидания истекло во время блокировки на шаге 4, вернуть false, иначе true.
Определено:
awaitUntil в интерфейсе Condition
Параметры:
deadline - абсолютное время ожидания
Возвращает:
false если срок ожидания истек при возврате, иначе true
Исключения:
InterruptedException - если текущая нить прервана (и прерывание приостановки нити поддерживается)

await

public final boolean await(long time, TimeUnit unit) throws InterruptedException
Реализует ожидание условия с таймером.
  1. Если текущая нить прервана, выбросить InterruptedException.
  2. Сохранить состояние блокировки, возвращенное методом AbstractQueuedSynchronizer.getState().
  3. Вызвать метод AbstractQueuedSynchronizer.release(int) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException при неудаче.
  4. Заблокироваться до получения сигнала, прерывания или истечения времени ожидания.
  5. Перезаполучить блокировку, вызвав специализированную версию метода AbstractQueuedSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedSynchronizer.Node, int, boolean, boolean, boolean, long) с сохранённым состоянием в качестве аргумента.
  6. Если нить прервана во время блокировки на шаге 4, выбросить InterruptedException.
  7. Если время ожидания истекло во время блокировки на шаге 4, вернуть false, иначе true.
Определено:
await в интерфейсе Condition
Параметры:
time - максимальное время ожидания
unit - единица измерения времени для аргумента time
Возвращает:
false если время ожидания истекло до возврата из метода, иначе true
Исключения:
InterruptedException - если текущая нить прервана (и прерывание приостановки нити поддерживается)

hasWaiters

protected final boolean hasWaiters()
Определяет, ожидают ли какие-либо нити на этом условии. Реализует AbstractQueuedSynchronizer.hasWaiters(ConditionObject).
Возвращает:
true если есть ожидающие нити
Исключения:
IllegalMonitorStateException - если AbstractQueuedSynchronizer.isHeldExclusively() возвращает false

getWaitQueueLength

protected final int getWaitQueueLength()
Возвращает оценку количества нитей, ожидающих на этом условии. Реализует AbstractQueuedSynchronizer.getWaitQueueLength(ConditionObject).
Возвращает:
оценка количества ожидающих нитей
Исключения:
IllegalMonitorStateException - если AbstractQueuedSynchronizer.isHeldExclusively() возвращает false

getWaitingThreads

protected final Collection<Thread> getWaitingThreads()
Возвращает коллекцию, содержащую те нити, которые могут ожидать на этом условии. Реализует AbstractQueuedSynchronizer.getWaitingThreads(ConditionObject).
Возвращает:
коллекция нитей
Исключения:
IllegalMonitorStateException - если AbstractQueuedSynchronizer.isHeldExclusively() возвращает false

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API