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