Класс AbstractQueuedSynchronizer.ConditionObject
- java.lang.Object
-
- java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject
- Все реализованные интерфейсы:
-
Serializable,Condition
- Вложенный класс:
- AbstractQueuedSynchronizer
public class AbstractQueuedSynchronizer.ConditionObject extends Object implements Condition, Serializable
Реализация Condition для AbstractQueuedSynchronizer, служащая основой для реализации Lock.
Документация методов этого класса описывает механику, а не спецификации поведения с точки зрения пользователей Lock и Condition. Экспортированные версии этого класса, как правило, должны сопровождаться документацией, описывающей семантику условий, которые опираются на семантику связанного AbstractQueuedSynchronizer.
Этот класс сериализуем, но все поля являются transient, поэтому у десериализованных условий нет ожидающих потоков.
- См. также:
- Сериализованная форма
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
ConditionObject() | Создает новый экземпляр |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | await() | Реализует ожидаемое условие с возможностью прерывания. |
boolean | await(long time,
TimeUnit unit) | Реализует ожидаемое условие с таймаутом. |
long | awaitNanos(long nanosTimeout) | Реализует ожидаемое условие с таймаутом. |
void | awaitUninterruptibly() | Реализует ожидаемое условие без возможности прерывания. |
boolean | awaitUntil(Date deadline) | Реализует ожидаемое условие с абсолютным таймаутом. |
protected Collection<Thread> | getWaitingThreads() | Возвращает коллекцию, содержащую потоки, которые могут ожидать на этом Condition. |
protected int | getWaitQueueLength() | Возвращает оценку числа потоков, ожидающих на этом условии. |
protected boolean | hasWaiters() | Определяет, ожидают ли какие-либо потоки на этом условии. |
void | signal() | Перемещает поток, ожидающий дольше всех, если таковой существует, из очереди ожидания для этого условия в очередь ожидания для владеющего блокировки. |
void | signalAll() | Перемещает все потоки из очереди ожидания для этого условия в очередь ожидания для владеющего блокировки. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
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.
- Если истекло время, вернуть 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.
- Если истекло время, вернуть 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()
Возвращает коллекцию, содержащую те нити, которые могут ожидать на этом Condition. Реализует AbstractQueuedSynchronizer.getWaitingThreads(ConditionObject).
- Возвращает:
- коллекцию нитей
- Исключения:
-
IllegalMonitorStateException- еслиAbstractQueuedSynchronizer.isHeldExclusively()возвращаетfalse
© 1993, 2020, 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/11/docs/api/java.base/java/util/concurrent/locks/AbstractQueuedSynchronizer.ConditionObject.html