Spec-Zone.ru › OpenJDK 8

Класс 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()

Создаёт новый экземпляр 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 - если AbstractQueuedSynchronizer.isHeldExclusively() возвращает false

signalAll

public final void signalAll()

Перемещает все потоки из очереди ожидания для этого условия в очередь ожидания для владеющего блокировкой потока.

Унаследованно от:
signalAll в интерфейсе Condition
Исключения:
IllegalMonitorStateException - если AbstractQueuedSynchronizer.isHeldExclusively() возвращает false

awaitUninterruptibly

public final void awaitUninterruptibly()

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

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

Унаследованно от:
awaitUninterruptibly в интерфейсе Condition

await

public final void await()
                 throws InterruptedException

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

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

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

awaitNanos

public final long awaitNanos(long nanosTimeout)
                      throws InterruptedException

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

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

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

awaitUntil

public final boolean awaitUntil(Date deadline)
                         throws InterruptedException

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

  1. Если текущий поток прерван, выбросить InterruptedException.
  2. Сохранить состояние блокировки, возвращённое методом AbstractQueuedSynchronizer.getState().
  3. Вызвать AbstractQueuedSynchronizer.release(int) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException, если произошла ошибка.
  4. Заблокироваться до сигнала, прерывания или истечения времени ожидания.
  5. Получить блокировку, вызвав специализированную версию AbstractQueuedSynchronizer.acquire(int) со сохранённым состоянием в качестве аргумента.
  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. Сохранить состояние блокировки, возвращённое методом AbstractQueuedSynchronizer.getState().
  3. Вызвать AbstractQueuedSynchronizer.release(int) со сохранённым состоянием в качестве аргумента, выбросив IllegalMonitorStateException, если произошла ошибка.
  4. Заблокироваться до сигнала, прерывания или истечения времени ожидания.
  5. Получить блокировку, вызвав специализированную версию AbstractQueuedSynchronizer.acquire(int) со сохранённым состоянием в качестве аргумента.
  6. Если поток прерван во время ожидания на шаге 4, выбросить InterruptedException.
  7. Если истекло время ожидания во время ожидания на шаге 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, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API