Класс 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<Thread> |
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, 2021, 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/17/docs/api/java.base/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html