Spec-Zone.ru › OpenJDK 24

Класс AbstractQueuedSynchronizer.ConditionObject

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

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

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

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

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

Конструктор Описание
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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html

Spec-Zone.ru

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