Класс 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() |
Возвращает коллекцию, содержащую потоки, которые могут ожидать этого условия. |
protected final int |
getWaitQueueLength() |
Возвращает оценочное количество потоков, ожидающих этого условия. |
protected final boolean |
hasWaiters() |
Проверяет, ожидают ли этого условия какие-либо потоки. |
final void |
signal() |
Перемещает поток, ожидающий дольше всех, если такой есть, из очереди ожидания этого условия в очередь ожидания связанной блокировки. |
final void |
signalAll() |
Перемещает все потоки из очереди ожидания этого условия в очередь ожидания связанной блокировки. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие уведомления или прерывания, либо истечения заданного интервала реального времени. |
final void |
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, 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.