Spec-Zone.ru › OpenJDK 24

Класс AbstractQueuedLongSynchronizer.ConditionObject

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

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

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

С тех пор:
1.6
См. также:
  • Формат сериализации

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

Конструктор Описание
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()
Возвращает коллекцию потоков, которые могут ожидать на этом Condition.
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 - если AbstractQueuedLongSynchronizer.isHeldExclusively() возвращает false

signalAll

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

awaitUninterruptibly

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

await

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

awaitNanos

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

awaitUntil

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

hasWaiters

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

getWaitQueueLength

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

getWaitingThreads

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

Spec-Zone.ru

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