Класс AbstractQueuedSynchronizer.ConditionObject
- Все реализуемые интерфейсы:
Serializable, Condition
- Внешний класс:
AbstractQueuedSynchronizer
public class AbstractQueuedSynchronizer.ConditionObject extends Object implements Condition, Serializable
AbstractQueuedSynchronizer, служащая основой для реализации Lock. Документация методов этого класса описывает механизмы работы, а не поведение с точки зрения пользователей Lock и Condition. Экспортируемые версии этого класса обычно требуют сопроводительной документации с описанием семантики условий, опирающейся на семантику связанного с ними AbstractQueuedSynchronizer.
Этот класс является сериализуемым, но все его поля transient, поэтому после десериализации у условий нет ожидающих потоков.
- Начиная с:
- 1.5
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
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— если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.
- Если время ожидания истекло во время блокировки на шаге 4, возвращает 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.
- Если время ожидания истекло во время блокировки на шаге 4, возвращает 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()
AbstractQueuedSynchronizer.getWaitingThreads(ConditionObject).- Возвращает:
- коллекцию потоков
- Вызывает исключение:
-
IllegalMonitorStateException— еслиAbstractQueuedSynchronizer.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.