Класс AbstractQueuedLongSynchronizer.ConditionObject

Все реализованные интерфейсы:
Serializable, Condition
Вложенный класс:
AbstractQueuedLongSynchronizer
public class AbstractQueuedLongSynchronizer.ConditionObject
extends Object
implements Condition, Serializable

Реализация условия для AbstractQueuedLongSynchronizer, служащей основой для реализации Lock.

Документация методов этого класса описывает механику, а не спецификации поведения с точки зрения пользователей Lock и Condition. Экспортированные версии этого класса, как правило, должны сопровождаться документацией, описывающей семантику условий, которые опираются на семантику связанного AbstractQueuedLongSynchronizer.

Этот класс сериализуем, но все поля являются transient, поэтому у десериализованных условий нет ожидающих потоков.

С:
1.6
См. также:
Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
ConditionObject()

Создаёт новый экземпляр ConditionObject.

Краткое описание методов

Модификатор и тип Метод Описание
void await()

Реализует ожидание условия с возможностью прерывания.

boolean await​(long time, TimeUnit unit)

Реализует ожидание условия с ограничением по времени.

long awaitNanos​(long nanosTimeout)

Реализует ожидание условия с ограничением по времени.

void awaitUninterruptibly()

Реализует ожидание условия без возможности прерывания.

boolean awaitUntil​(Date deadline)

Реализует ожидание условия с абсолютным ограничением по времени.

protected Collection<Thread> getWaitingThreads()

Возвращает коллекцию, содержащую потоки, которые могут ожидать на этом условии.

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()

Реализует неостанавливаемое ожидание условия.

  1. Сохранить состояние блокировки, возвращённое AbstractQueuedLongSynchronizer.getState().
  2. Вызвать AbstractQueuedLongSynchronizer.release(long) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException, если это не удалось.
  3. Заблокировать до сигнала.
  4. Перезахватить, вызвав специализированную версию AbstractQueuedLongSynchronizer.acquire(long) со сохранённым состоянием в качестве аргумента.

Определено в:
awaitUninterruptibly в интерфейсе Condition

await

public final void await()
                 throws InterruptedException

Реализует останавливаемое ожидание условия.

  1. Если текущая нить прервана, выбросить InterruptedException.
  2. Сохранить состояние блокировки, возвращённое AbstractQueuedLongSynchronizer.getState().
  3. Вызвать AbstractQueuedLongSynchronizer.release(long) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException, если это не удалось.
  4. Заблокировать до сигнала или прерывания.
  5. Перезахватить, вызвав специализированную версию AbstractQueuedLongSynchronizer.acquire(long) со сохранённым состоянием в качестве аргумента.
  6. Если прервано во время блокировки на шаге 4, выбросить InterruptedException.

Определено в:
await в интерфейсе Condition
Исключения:
InterruptedException - если текущая нить прервана (и прерывание приостановки нити поддерживается)

awaitNanos

public final long awaitNanos(long nanosTimeout)
                      throws InterruptedException

Реализует тайм-ограниченное ожидание условия.

  1. Если текущая нить прервана, выбросить InterruptedException.
  2. Сохранить состояние блокировки, возвращённое AbstractQueuedLongSynchronizer.getState().
  3. Вызвать AbstractQueuedLongSynchronizer.release(long) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException, если это не удалось.
  4. Заблокировать до сигнала, прерывания или истечения времени ожидания.
  5. Перезахватить, вызвав специализированную версию AbstractQueuedLongSynchronizer.acquire(long) со сохранённым состоянием в качестве аргумента.
  6. Если прервано во время блокировки на шаге 4, выбросить InterruptedException.

Определено в:
awaitNanos в интерфейсе Condition
Параметры:
nanosTimeout - максимальное время ожидания в наносекундах
Возвращает:
оценка значения nanosTimeout минус время ожидания при возврате из этого метода. Положительное значение может быть использовано в качестве аргумента для последующего вызова этого метода, чтобы завершить ожидание в течение желаемого времени. Значение меньше или равно нулю указывает, что времени больше нет.
Исключения:
InterruptedException - если текущая нить прервана (и прерывание приостановки нити поддерживается)

awaitUntil

public final boolean awaitUntil(Date deadline)
                         throws InterruptedException

Реализует абсолютное тайм-ограниченное ожидание условия.

  1. Если текущая нить прервана, выбросить InterruptedException.
  2. Сохранить состояние блокировки, возвращённое AbstractQueuedLongSynchronizer.getState().
  3. Вызвать AbstractQueuedLongSynchronizer.release(long) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException, если это не удалось.
  4. Заблокировать до сигнала, прерывания или истечения времени ожидания.
  5. Перезахватить, вызвав специализированную версию AbstractQueuedLongSynchronizer.acquire(long) со сохранённым состоянием в качестве аргумента.
  6. Если прервано во время блокировки на шаге 4, выбросить InterruptedException.
  7. Если истекло время ожидания во время блокировки на шаге 4, вернуть false, иначе true.

Определено в:
awaitUntil в интерфейсе Condition
Параметры:
deadline - абсолютное время ожидания
Возвращает:
false если срок истек при возврате, иначе true
Исключения:
InterruptedException - если текущая нить прервана (и прерывание приостановки нити поддерживается)

await

public final boolean await(long time,
                           TimeUnit unit)
                    throws InterruptedException

Реализует тайм-ограниченное ожидание условия.

  1. Если текущая нить прервана, выбросить InterruptedException.
  2. Сохранить состояние блокировки, возвращённое AbstractQueuedLongSynchronizer.getState().
  3. Вызвать AbstractQueuedLongSynchronizer.release(long) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException, если это не удалось.
  4. Заблокировать до сигнала, прерывания или истечения времени ожидания.
  5. Перезахватить, вызвав специализированную версию AbstractQueuedLongSynchronizer.acquire(long) со сохранённым состоянием в качестве аргумента.
  6. Если прервано во время блокировки на шаге 4, выбросить InterruptedException.
  7. Если истекло время ожидания во время блокировки на шаге 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/locks/AbstractQueuedLongSynchronizer.ConditionObject.html

Spec-Zone .ru
спецификации, руководства, описания, API