Класс AbstractQueuedLongSynchronizer.ConditionObject
- Все реализованные интерфейсы:
-
Serializable,Condition
- Вложенный класс:
AbstractQueuedLongSynchronizer
public class AbstractQueuedLongSynchronizer.ConditionObject extends Object implements Condition, Serializable
AbstractQueuedLongSynchronizer, служащего основой для реализации Lock. Документация методов этого класса описывает механику, а не поведенческие спецификации с точки зрения пользователей Lock и Condition. Экспортированные версии этого класса, как правило, должны сопровождаться документацией, описывающей семантику условного ожидания, которая основана на семантике связанного AbstractQueuedLongSynchronizer.
Этот класс сериализуем, но все поля являются transient, поэтому сериализованные условия не имеют ожидающих потоков.
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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(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, 2023, 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/21/docs/api/java.base/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html