Spec-Zone.ru › OpenJDK 25

Класс AbstractQueuedLongSynchronizer.ConditionObject

java.lang.Object
java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject
Все реализуемые интерфейсы:
Serializable, Condition
Внешний класс:
AbstractQueuedLongSynchronizer
public class AbstractQueuedLongSynchronizer.ConditionObject extends Object implements Condition, Serializable
Реализация Condition для 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()
Возвращает коллекцию, содержащую потоки, которые могут ожидать выполнения этого условия.
protected final int getWaitQueueLength()
Возвращает оценочное количество потоков, ожидающих выполнения этого условия.
protected final boolean hasWaiters()
Проверяет, ожидают ли какие-либо потоки выполнения этого условия.
final void signal()
Перемещает поток, ожидающий дольше всех, если такой есть, из очереди ожидания этого условия в очередь ожидания связанной блокировки.
final void signalAll()
Перемещает все потоки из очереди ожидания этого условия в очередь ожидания связанной блокировки.

Методы, объявленные в классе 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(long) и передавая сохраненное состояние в качестве аргумента.
Определено в:
awaitUninterruptibly в интерфейсе Condition

await

public final void await() throws InterruptedException
Реализует ожидание условия с возможностью прерывания.
  1. Если текущий поток прерван, генерирует InterruptedException.
  2. Сохраняет состояние блокировки, возвращенное методом AbstractQueuedLongSynchronizer.getState().
  3. Вызывает AbstractQueuedLongSynchronizer.release(long), передавая сохраненное состояние в качестве аргумента; если вызов завершается неудачей, генерируется IllegalMonitorStateException.
  4. Блокирует поток до получения сигнала или прерывания.
  5. Повторно захватывает блокировку, вызывая базовую версию AbstractQueuedLongSynchronizer.acquire(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(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(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(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()
Возвращает коллекцию, содержащую потоки, которые могут ожидать выполнения этого Condition. Реализует AbstractQueuedLongSynchronizer.getWaitingThreads(ConditionObject).
Возвращает:
коллекцию потоков
Вызывает исключение:
IllegalMonitorStateException — если AbstractQueuedLongSynchronizer.isHeldExclusively() возвращает false

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html

Spec-Zone.ru

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