Класс 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() |
Возвращает коллекцию потоков, которые могут ожидать на этом 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- если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(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)с сохранённым состоянием в качестве аргумента.
- Указано в:
-
awaitUninterruptiblyв интерфейсеCondition
await
public final void await() throws InterruptedException
- Если текущая нить прервана, выбросить InterruptedException.
- Сохраняет состояние блокировки, возвращённое
AbstractQueuedLongSynchronizer.getState(). - Вызывает
AbstractQueuedLongSynchronizer.release(long)со сохранённым состоянием в качестве аргумента, выбрасывая IllegalMonitorStateException, если это не удалось. - Ожидает сигнала или прерывания.
- Повторно получает блокировку, вызвав специализированный вариант
AbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, long)с сохранённым состоянием в качестве аргумента. - Если прервано во время ожидания на шаге 4, выбросить InterruptedException.
- Указано в:
-
awaitв интерфейсеCondition - Исключения:
-
InterruptedException- если текущая нить прервана (и прерывание приостановки нити поддерживается)
awaitNanos
public final long awaitNanos(long nanosTimeout) throws InterruptedException
- Если текущая нить прервана, выбросить InterruptedException.
- Сохраняет состояние блокировки, возвращённое
AbstractQueuedLongSynchronizer.getState(). - Вызывает
AbstractQueuedLongSynchronizer.release(long)со сохранённым состоянием в качестве аргумента, выбрасывая IllegalMonitorStateException, если это не удалось. - Ожидает сигнала, прерывания или истечения времени ожидания.
- Повторно получает блокировку, вызвав специализированный вариант
AbstractQueuedLongSynchronizer.acquire(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, 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(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, 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(java.util.concurrent.locks.AbstractQueuedLongSynchronizer.Node, long, boolean, boolean, boolean, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html