Класс AbstractQueuedSynchronizer.ConditionObject
- Все реализуемые интерфейсы:
Serializable, Condition
- Внешний класс:
AbstractQueuedSynchronizer
public class AbstractQueuedSynchronizer.ConditionObject extends Object implements Condition, Serializable
AbstractQueuedSynchronizer, служащая основой для реализации Lock. Документация методов этого класса описывает механику, а не поведенческие спецификации с точки зрения пользователей Lock и Condition. Экспортируемые версии этого класса обычно потребуется сопровождать документацией, описывающей семантику условий, зависящую от семантики связанного AbstractQueuedSynchronizer.
Этот класс реализует Serializable, но все его поля являются transient, поэтому десериализованные условия не имеют ожидающих потоков.
- Начиная с:
- 1.5
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ConditionObject() |
Создает новый экземпляр ConditionObject. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final void |
await() |
Реализует ожидание условия с возможностью прерывания. |
final boolean |
await |
Реализует ожидание условия с ограничением по времени. |
final long |
awaitNanos |
Реализует ожидание условия с ограничением по времени. |
final void |
awaitUninterruptibly() |
Реализует ожидание условия без возможности прерывания. |
final boolean |
awaitUntil |
Реализует ожидание условия с абсолютным ограничением по времени. |
protected final Collection |
getWaitingThreads() |
Возвращает коллекцию, содержащую потоки, которые могут ожидать этого Condition. |
protected final int |
getWaitQueueLength() |
Возвращает оценочное количество потоков, ожидающих этого условия. |
protected final boolean |
hasWaiters() |
Проверяет, ожидают ли этого условия какие-либо потоки. |
final void |
signal() |
Перемещает поток, ожидающий дольше всех, если такой есть, из очереди ожидания этого условия в очередь ожидания блокировки-владельца. |
final void |
signalAll() |
Перемещает все потоки из очереди ожидания этого условия в очередь ожидания блокировки-владельца. |
Подробное описание конструкторов
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()
- Сохраняет состояние блокировки, возвращенное методом
AbstractQueuedSynchronizer.getState(). - Вызывает
AbstractQueuedSynchronizer.release(int), передавая сохраненное состояние в качестве аргумента; если вызов завершается неудачно, выбрасывает IllegalMonitorStateException. - Блокирует поток до получения сигнала.
- Повторно захватывает блокировку, вызывая базовую версию
AbstractQueuedSynchronizer.acquire(int)и передавая сохраненное состояние в качестве аргумента.
- Определено в:
-
awaitUninterruptiblyв интерфейсеCondition
await
public final void await() throws InterruptedException
- Если текущий поток прерван, выбрасывает InterruptedException.
- Сохраняет состояние блокировки, возвращенное методом
AbstractQueuedSynchronizer.getState(). - Вызывает
AbstractQueuedSynchronizer.release(int), передавая сохраненное состояние в качестве аргумента; если вызов завершается неудачно, выбрасывает IllegalMonitorStateException. - Блокирует поток до получения сигнала или прерывания.
- Повторно захватывает блокировку, вызывая базовую версию
AbstractQueuedSynchronizer.acquire(int)и передавая сохраненное состояние в качестве аргумента. - Если поток был прерван во время блокировки на шаге 4, выбрасывает InterruptedException.
- Определено в:
-
awaitв интерфейсеCondition - Исключения:
-
InterruptedException— если текущий поток прерван (и поддерживается прерывание приостановки потока)
awaitNanos
public final long awaitNanos(long nanosTimeout) throws InterruptedException
- Если текущий поток прерван, выбрасывает InterruptedException.
- Сохраняет состояние блокировки, возвращенное методом
AbstractQueuedSynchronizer.getState(). - Вызывает
AbstractQueuedSynchronizer.release(int), передавая сохраненное состояние в качестве аргумента; если вызов завершается неудачно, выбрасывает IllegalMonitorStateException. - Блокирует поток до получения сигнала, прерывания или истечения времени ожидания.
- Повторно захватывает блокировку, вызывая базовую версию
AbstractQueuedSynchronizer.acquire(int)и передавая сохраненное состояние в качестве аргумента. - Если поток был прерван во время блокировки на шаге 4, выбрасывает InterruptedException.
- Определено в:
-
awaitNanosв интерфейсеCondition - Параметры:
-
nanosTimeout— максимальное время ожидания в наносекундах - Возвращает:
- оценку значения
nanosTimeoutза вычетом времени, затраченного на ожидание к моменту возврата из этого метода. Положительное значение можно использовать в качестве аргумента последующего вызова этого метода, чтобы завершить ожидание в течение заданного времени. Значение, меньшее или равное нулю, означает, что время ожидания истекло. - Исключения:
-
InterruptedException— если текущий поток прерван (и поддерживается прерывание приостановки потока)
awaitUntil
public final boolean awaitUntil(Date deadline) throws InterruptedException
- Если текущий поток прерван, выбрасывает InterruptedException.
- Сохраняет состояние блокировки, возвращенное методом
AbstractQueuedSynchronizer.getState(). - Вызывает
AbstractQueuedSynchronizer.release(int), передавая сохраненное состояние в качестве аргумента; если вызов завершается неудачно, выбрасывает IllegalMonitorStateException. - Блокирует поток до получения сигнала, прерывания или истечения времени ожидания.
- Повторно захватывает блокировку, вызывая базовую версию
AbstractQueuedSynchronizer.acquire(int)и передавая сохраненное состояние в качестве аргумента. - Если поток был прерван во время блокировки на шаге 4, выбрасывает InterruptedException.
- Если время ожидания истекло во время блокировки на шаге 4, возвращает false, иначе — true.
- Определено в:
-
awaitUntilв интерфейсеCondition - Параметры:
-
deadline— абсолютное время окончания ожидания - Возвращает:
-
false, если к моменту возврата срок ожидания истек, иначеtrue - Исключения:
-
InterruptedException— если текущий поток прерван (и поддерживается прерывание приостановки потока)
await
public final boolean await(long time, TimeUnit unit) throws InterruptedException
- Если текущий поток прерван, выбрасывает InterruptedException.
- Сохраняет состояние блокировки, возвращенное методом
AbstractQueuedSynchronizer.getState(). - Вызывает
AbstractQueuedSynchronizer.release(int), передавая сохраненное состояние в качестве аргумента; если вызов завершается неудачно, выбрасывает IllegalMonitorStateException. - Блокирует поток до получения сигнала, прерывания или истечения времени ожидания.
- Повторно захватывает блокировку, вызывая базовую версию
AbstractQueuedSynchronizer.acquire(int)и передавая сохраненное состояние в качестве аргумента. - Если поток был прерван во время блокировки на шаге 4, выбрасывает InterruptedException.
- Если время ожидания истекло во время блокировки на шаге 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html