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