Spec-Zone.ru › OpenJDK 27

Класс AbstractQueuedLongSynchronizer

java.lang.Object
java.util.concurrent.locks.AbstractOwnableSynchronizer
java.util.concurrent.locks.AbstractQueuedLongSynchronizer
Все реализованные интерфейсы:
Serializable
public abstract class AbstractQueuedLongSynchronizer extends AbstractOwnableSynchronizer implements Serializable
Версия AbstractQueuedSynchronizer, в которой состояние синхронизации хранится как long. Этот класс имеет точно такую же структуру, свойства и методы, как AbstractQueuedSynchronizer, за исключением того, что все параметры и результаты, относящиеся к состоянию, определены как long, а не как int. Этот класс может быть полезен при создании синхронизаторов, таких как многоуровневые блокировки и барьеры, которым требуется 64 бита состояния.

Примечания по использованию и примеры см. в разделе AbstractQueuedSynchronizer.

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

Краткое описание вложенных классов

Модификатор и тип Класс Описание
class  AbstractQueuedLongSynchronizer.ConditionObject
Реализация Condition для AbstractQueuedLongSynchronizer, служащая основой для реализации Lock.

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

Конструктор Описание
AbstractQueuedLongSynchronizer()
Конструктор для вызова подклассами.

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

Модификатор и тип Метод Описание
final void acquire(long arg)
Захватывает в эксклюзивном режиме, игнорируя прерывания.
final void acquireInterruptibly(long arg)
Захватывает в эксклюзивном режиме, прекращая выполнение при прерывании.
final void acquireShared(long arg)
Захватывает в разделяемом режиме, игнорируя прерывания.
final void acquireSharedInterruptibly(long arg)
Захватывает в разделяемом режиме, прекращая выполнение при прерывании.
protected final boolean compareAndSetState(long expect, long update)
Атомарно устанавливает состояние синхронизации в указанное новое значение, если текущее значение состояния равно ожидаемому.
final Collection<Thread> getExclusiveQueuedThreads()
Возвращает коллекцию потоков, которые могут ожидать захвата в эксклюзивном режиме.
final Thread getFirstQueuedThread()
Возвращает первый поток в очереди (ожидающий дольше всех) или null, если в очереди нет потоков.
final Collection<Thread> getQueuedThreads()
Возвращает коллекцию потоков, которые могут ожидать захвата.
final int getQueueLength()
Возвращает оценочное число потоков, ожидающих захвата.
final Collection<Thread> getSharedQueuedThreads()
Возвращает коллекцию потоков, которые могут ожидать захвата в разделяемом режиме.
protected final long getState()
Возвращает текущее значение состояния синхронизации.
final Collection<Thread> getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)
Возвращает коллекцию потоков, которые могут ожидать указанного условия, связанного с этим синхронизатором.
final int getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)
Возвращает оценочное число потоков, ожидающих указанного условия, связанного с этим синхронизатором.
final boolean hasContended()
Проверяет, пытались ли когда-либо потоки захватить этот синхронизатор, то есть блокировался ли когда-либо метод захвата.
final boolean hasQueuedPredecessors()
Проверяет, ожидали ли какие-либо потоки захвата дольше текущего потока.
final boolean hasQueuedThreads()
Проверяет, ожидают ли какие-либо потоки захвата.
final boolean hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)
Проверяет, ожидают ли какие-либо потоки указанного условия, связанного с этим синхронизатором.
protected boolean isHeldExclusively()
Возвращает true, если синхронизация удерживается эксклюзивно относительно текущего (вызывающего) потока.
final boolean isQueued(Thread thread)
Возвращает true, если указанный поток в данный момент находится в очереди.
final boolean owns(AbstractQueuedLongSynchronizer.ConditionObject condition)
Проверяет, использует ли указанный ConditionObject этот синхронизатор в качестве блокировки.
final boolean release(long arg)
Освобождает в эксклюзивном режиме.
final boolean releaseShared(long arg)
Освобождает в разделяемом режиме.
protected final void setState(long newState)
Устанавливает значение состояния синхронизации.
String toString()
Возвращает строку, идентифицирующую этот синхронизатор и его состояние.
protected boolean tryAcquire(long arg)
Пытается захватить в эксклюзивном режиме.
final boolean tryAcquireNanos(long arg, long nanosTimeout)
Пытается захватить в эксклюзивном режиме, прекращая выполнение при прерывании и завершаясь неудачей по истечении указанного времени ожидания.
protected long tryAcquireShared(long arg)
Пытается захватить в разделяемом режиме.
final boolean tryAcquireSharedNanos(long arg, long nanosTimeout)
Пытается захватить в разделяемом режиме, прекращая выполнение при прерывании и завершаясь неудачей по истечении указанного времени ожидания.
protected boolean tryRelease(long arg)
Пытается установить состояние, отражающее освобождение в эксклюзивном режиме.
protected boolean tryReleaseShared(long arg)
Пытается установить состояние, отражающее освобождение в разделяемом режиме.

Методы, объявленные в классе AbstractOwnableSynchronizer

getExclusiveOwnerThread, setExclusiveOwnerThread
Модификатор и тип Метод Описание
protected final Thread getExclusiveOwnerThread()
Возвращает поток, последний раз заданный вызовом setExclusiveOwnerThread, или null, если он никогда не задавался.
protected final void setExclusiveOwnerThread(Thread thread)
Задает поток, которому в данный момент принадлежит эксклюзивный доступ.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения определенного периода реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством уведомления или прерывания, либо до истечения определенного периода реального времени.

Подробное описание конструкторов

AbstractQueuedLongSynchronizer

public AbstractQueuedLongSynchronizer()
Конструктор для вызова подклассами.

Подробное описание методов

getState

protected final long getState()
Возвращает текущее значение состояния синхронизации. Эта операция обладает семантикой памяти чтения volatile.
Возвращает:
текущее значение состояния

setState

protected final void setState(long newState)
Устанавливает значение состояния синхронизации. Эта операция обладает семантикой памяти записи volatile.
Параметры:
newState — новое значение состояния

compareAndSetState

protected final boolean compareAndSetState(long expect, long update)
Атомарно устанавливает заданное новое значение состояния синхронизации, если текущее значение состояния равно ожидаемому. Эта операция обладает семантикой памяти чтения и записи volatile.
Параметры:
expect — ожидаемое значение
update — новое значение
Возвращает:
true при успехе. Возвращаемое значение false означает, что фактическое значение не совпало с ожидаемым.

tryAcquire

protected boolean tryAcquire(long arg)
Пытается выполнить захват в монопольном режиме. Этот метод должен проверять, позволяет ли состояние объекта выполнить захват в монопольном режиме, и, если позволяет, выполнять его.

Этот метод всегда вызывается потоком, выполняющим захват. Если метод сообщает о неудаче, метод захвата может поставить поток в очередь, если он ещё не находится в ней, и ожидать, пока другой поток не подаст сигнал освобождением. Это можно использовать для реализации метода Lock.tryLock().

Реализация по умолчанию выбрасывает исключение UnsupportedOperationException.

Параметры:
arg — аргумент захвата. Это значение всегда передаётся методу захвата или является значением, сохранённым при входе в ожидание условия. В остальном оно не интерпретируется и может представлять что угодно.
Возвращает:
true при успехе. В случае успеха этот объект захвачен.
Исключения:
IllegalMonitorStateException — если захват приведёт к недопустимому состоянию этого синхронизатора. Для корректной работы синхронизации это исключение должно выбрасываться последовательно.
UnsupportedOperationException — если монопольный режим не поддерживается

tryRelease

protected boolean tryRelease(long arg)
Пытается изменить состояние, отражая освобождение в монопольном режиме.

Этот метод всегда вызывается потоком, выполняющим освобождение.

Реализация по умолчанию выбрасывает исключение UnsupportedOperationException.

Параметры:
arg — аргумент освобождения. Это значение всегда передаётся методу освобождения или является текущим значением состояния при входе в ожидание условия. В остальном оно не интерпретируется и может представлять что угодно.
Возвращает:
true, если теперь объект полностью освобождён и ожидающие потоки могут попытаться выполнить захват; в противном случае — false.
Исключения:
IllegalMonitorStateException — если освобождение приведёт к недопустимому состоянию этого синхронизатора. Для корректной работы синхронизации это исключение должно выбрасываться последовательно.
UnsupportedOperationException — если монопольный режим не поддерживается

tryAcquireShared

protected long tryAcquireShared(long arg)
Пытается выполнить захват в разделяемом режиме. Этот метод должен проверять, позволяет ли состояние объекта выполнить захват в разделяемом режиме, и, если позволяет, выполнять его.

Этот метод всегда вызывается потоком, выполняющим захват. Если метод сообщает о неудаче, метод захвата может поставить поток в очередь, если он ещё не находится в ней, и ожидать, пока другой поток не подаст сигнал освобождением.

Реализация по умолчанию выбрасывает исключение UnsupportedOperationException.

Параметры:
arg — аргумент захвата. Это значение всегда передаётся методу захвата или является значением, сохранённым при входе в ожидание условия. В остальном оно не интерпретируется и может представлять что угодно.
Возвращает:
отрицательное значение в случае неудачи; ноль, если захват в разделяемом режиме выполнен, но последующие захваты в разделяемом режиме невозможны; положительное значение, если захват в разделяемом режиме выполнен и последующие захваты в этом режиме также могут быть успешны. В последнем случае следующий ожидающий поток должен проверить доступность. (Поддержка трёх различных возвращаемых значений позволяет использовать этот метод в контекстах, где захват действует монопольно лишь иногда.) В случае успеха этот объект захвачен.
Исключения:
IllegalMonitorStateException — если захват приведёт к недопустимому состоянию этого синхронизатора. Для корректной работы синхронизации это исключение должно выбрасываться последовательно.
UnsupportedOperationException — если разделяемый режим не поддерживается

tryReleaseShared

protected boolean tryReleaseShared(long arg)
Пытается изменить состояние, отражая освобождение в разделяемом режиме.

Этот метод всегда вызывается потоком, выполняющим освобождение.

Реализация по умолчанию выбрасывает исключение UnsupportedOperationException.

Параметры:
arg — аргумент освобождения. Это значение всегда передаётся методу освобождения или является текущим значением состояния при входе в ожидание условия. В остальном оно не интерпретируется и может представлять что угодно.
Возвращает:
true, если освобождение в разделяемом режиме может позволить ожидающему потоку выполнить захват (разделяемый или монопольный); в противном случае — false.
Исключения:
IllegalMonitorStateException — если освобождение приведёт к недопустимому состоянию этого синхронизатора. Для корректной работы синхронизации это исключение должно выбрасываться последовательно.
UnsupportedOperationException — если разделяемый режим не поддерживается

isHeldExclusively

protected boolean isHeldExclusively()
Возвращает true, если синхронизация удерживается монопольно относительно текущего (вызывающего) потока. Этот метод вызывается при каждом вызове метода AbstractQueuedLongSynchronizer.ConditionObject.

Реализация по умолчанию выбрасывает исключение UnsupportedOperationException. Этот метод вызывается внутри только методами AbstractQueuedLongSynchronizer.ConditionObject, поэтому его можно не определять, если условия не используются.

Возвращает:
true, если синхронизация удерживается монопольно; в противном случае — false
Исключения:
UnsupportedOperationException — если условия не поддерживаются

acquire

public final void acquire(long arg)
Выполняет захват в монопольном режиме, игнорируя прерывания. Реализован вызовом tryAcquire(long) как минимум один раз; при успехе метод возвращает управление. В противном случае поток ставится в очередь и может многократно блокироваться и разблокироваться, вызывая tryAcquire(long) до достижения успеха. Этот метод можно использовать для реализации метода Lock.lock().
Параметры:
arg — аргумент захвата. Это значение передаётся в tryAcquire(long), но в остальном не интерпретируется и может представлять что угодно.

acquireInterruptibly

public final void acquireInterruptibly(long arg) throws InterruptedException
Выполняет захват в монопольном режиме с отменой при прерывании. Сначала проверяется статус прерывания, затем вызывается tryAcquire(long) как минимум один раз; при успехе метод возвращает управление. В противном случае поток ставится в очередь и может многократно блокироваться и разблокироваться, вызывая tryAcquire(long) до достижения успеха или прерывания потока. Этот метод можно использовать для реализации метода Lock.lockInterruptibly().
Параметры:
arg — аргумент захвата. Это значение передаётся в tryAcquire(long), но в остальном не интерпретируется и может представлять что угодно.
Исключения:
InterruptedException — если текущий поток прерван

tryAcquireNanos

public final boolean tryAcquireNanos(long arg, long nanosTimeout) throws InterruptedException
Пытается выполнить захват в монопольном режиме с отменой при прерывании и неудачей по истечении заданного времени ожидания. Сначала проверяется статус прерывания, затем вызывается tryAcquire(long) как минимум один раз; при успехе метод возвращает управление. В противном случае поток ставится в очередь и может многократно блокироваться и разблокироваться, вызывая tryAcquire(long) до достижения успеха, прерывания потока или истечения времени ожидания. Этот метод можно использовать для реализации метода Lock.tryLock(long, TimeUnit).
Параметры:
arg — аргумент захвата. Это значение передаётся в tryAcquire(long), но в остальном не интерпретируется и может представлять что угодно.
nanosTimeout — максимальное время ожидания в наносекундах
Возвращает:
true, если захват выполнен; false, если время ожидания истекло
Исключения:
InterruptedException — если текущий поток прерван

release

public final boolean release(long arg)
Выполняет освобождение в монопольном режиме. Если tryRelease(long) возвращает true, один или несколько потоков разблокируются. Этот метод можно использовать для реализации метода Lock.unlock().
Параметры:
arg — аргумент освобождения. Это значение передаётся в tryRelease(long), но в остальном не интерпретируется и может представлять что угодно.
Возвращает:
значение, возвращённое методом tryRelease(long)

acquireShared

public final void acquireShared(long arg)
Выполняет захват в разделяемом режиме, игнорируя прерывания. Сначала вызывается tryAcquireShared(long) как минимум один раз; при успехе метод возвращает управление. В противном случае поток ставится в очередь и может многократно блокироваться и разблокироваться, вызывая tryAcquireShared(long) до достижения успеха.
Параметры:
arg — аргумент захвата. Это значение передаётся в tryAcquireShared(long), но в остальном не интерпретируется и может представлять что угодно.

acquireSharedInterruptibly

public final void acquireSharedInterruptibly(long arg) throws InterruptedException
Выполняет захват в разделяемом режиме с отменой при прерывании. Сначала проверяется статус прерывания, затем вызывается tryAcquireShared(long) как минимум один раз; при успехе метод возвращает управление. В противном случае поток ставится в очередь и может многократно блокироваться и разблокироваться, вызывая tryAcquireShared(long) до достижения успеха или прерывания потока.
Параметры:
arg — аргумент захвата. Это значение передаётся в tryAcquireShared(long), но в остальном не интерпретируется и может представлять что угодно.
Исключения:
InterruptedException — если текущий поток прерван

tryAcquireSharedNanos

public final boolean tryAcquireSharedNanos(long arg, long nanosTimeout) throws InterruptedException
Пытается выполнить захват в разделяемом режиме с отменой при прерывании и неудачей по истечении заданного времени ожидания. Сначала проверяется статус прерывания, затем вызывается tryAcquireShared(long) как минимум один раз; при успехе метод возвращает управление. В противном случае поток ставится в очередь и может многократно блокироваться и разблокироваться, вызывая tryAcquireShared(long) до достижения успеха, прерывания потока или истечения времени ожидания.
Параметры:
arg — аргумент захвата. Это значение передаётся в tryAcquireShared(long), но в остальном не интерпретируется и может представлять что угодно.
nanosTimeout — максимальное время ожидания в наносекундах
Возвращает:
true, если захват выполнен; false, если время ожидания истекло
Исключения:
InterruptedException — если текущий поток прерван

releaseShared

public final boolean releaseShared(long arg)
Выполняет освобождение в разделяемом режиме. Если tryReleaseShared(long) возвращает true, один или несколько потоков разблокируются.
Параметры:
arg — аргумент освобождения. Это значение передаётся в tryReleaseShared(long), но в остальном не интерпретируется и может представлять что угодно.
Возвращает:
значение, возвращённое методом tryReleaseShared(long)

hasQueuedThreads

public final boolean hasQueuedThreads()
Проверяет, ожидают ли какие-либо потоки выполнения захвата. Обратите внимание: поскольку отмена из-за прерываний и истечения времени ожидания может произойти в любой момент, возвращаемое значение true не гарантирует, что какой-либо другой поток когда-либо выполнит захват.
Возвращает:
true, если другие потоки могут ожидать выполнения захвата

hasContended

public final boolean hasContended()
Проверяет, пытались ли когда-либо потоки конкурировать за захват этого синхронизатора, то есть блокировался ли когда-либо метод захвата.

В этой реализации операция выполняется за постоянное время.

Возвращает:
true, если конкуренция когда-либо возникала

getFirstQueuedThread

public final Thread getFirstQueuedThread()
Возвращает первый поток в очереди (дольше всех ожидающий) или null, если в очереди сейчас нет потоков.

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

Возвращает:
первый поток в очереди (дольше всех ожидающий) или null, если в очереди сейчас нет потоков

isQueued

public final boolean isQueued(Thread thread)
Возвращает true, если указанный поток в данный момент находится в очереди.

Эта реализация обходит очередь, чтобы определить, присутствует ли в ней указанный поток.

Параметры:
thread — поток
Возвращает:
true, если указанный поток находится в очереди
Исключения:
NullPointerException — если поток равен null

hasQueuedPredecessors

public final boolean hasQueuedPredecessors()
Проверяет, ожидают ли какие-либо потоки выполнения захвата дольше, чем текущий поток.

Вызов этого метода эквивалентен следующему выражению (но может быть эффективнее):

getFirstQueuedThread() != Thread.currentThread()
  && hasQueuedThreads()

Обратите внимание: поскольку отмена из-за прерываний и истечения времени ожидания может произойти в любой момент, возвращаемое значение true не гарантирует, что другой поток выполнит захват раньше текущего. Также другой поток может выиграть гонку и попасть в очередь после возврата из этого метода со значением false, поскольку очередь была пуста.

Этот метод предназначен для использования справедливым синхронизатором, чтобы избежать опережения очереди. Метод tryAcquire(long) такого синхронизатора должен возвращать false, а его метод tryAcquireShared(long) должен возвращать отрицательное значение, если этот метод возвращает true (кроме случаев повторного входящего захвата). Например, метод tryAcquire справедливого реентерабельного синхронизатора с монопольным режимом может выглядеть так:

protected boolean tryAcquire(long arg) {
  if (isHeldExclusively()) {
    // A reentrant acquire; increment hold count
    return true;
  } else if (hasQueuedPredecessors()) {
    return false;
  } else {
    // try to acquire normally
  }
}
Возвращает:
true, если в очереди перед текущим потоком есть другой поток; false, если текущий поток находится в начале очереди или очередь пуста
Начиная с версии:
1.7

getQueueLength

public final int getQueueLength()
Возвращает оценку количества потоков, ожидающих выполнения захвата. Значение является лишь оценкой, поскольку количество потоков может динамически изменяться во время обхода внутренних структур данных этим методом. Метод предназначен для мониторинга состояния системы, а не для управления синхронизацией.
Возвращает:
оценку количества потоков, ожидающих выполнения захвата

getQueuedThreads

public final Collection<Thread> getQueuedThreads()
Возвращает коллекцию, содержащую потоки, которые могут ожидать выполнения захвата. Поскольку фактический набор потоков может динамически изменяться во время формирования результата, возвращаемая коллекция является лишь наилучшей возможной оценкой. Элементы возвращаемой коллекции не упорядочены. Метод предназначен для упрощения создания подклассов с более широкими возможностями мониторинга.
Возвращает:
коллекцию потоков

getExclusiveQueuedThreads

public final Collection<Thread> getExclusiveQueuedThreads()
Возвращает коллекцию, содержащую потоки, которые могут ожидать выполнения захвата в монопольном режиме. Свойства этой коллекции совпадают со свойствами коллекции, возвращаемой методом getQueuedThreads(), за исключением того, что она содержит только потоки, ожидающие монопольного захвата.
Возвращает:
коллекцию потоков

getSharedQueuedThreads

public final Collection<Thread> getSharedQueuedThreads()
Возвращает коллекцию, содержащую потоки, которые могут ожидать выполнения захвата в разделяемом режиме. Свойства этой коллекции совпадают со свойствами коллекции, возвращаемой методом getQueuedThreads(), за исключением того, что она содержит только потоки, ожидающие разделяемого захвата.
Возвращает:
коллекцию потоков

toString

public String toString()
Возвращает строку, идентифицирующую этот синхронизатор и его состояние. Состояние в квадратных скобках включает строку "State =", за которой следует текущее значение getState(), а также "nonempty" или "empty" в зависимости от того, пуста ли очередь.
Переопределяет:
toString в классе Object
Возвращает:
строку, идентифицирующую этот синхронизатор и его состояние

owns

public final boolean owns(AbstractQueuedLongSynchronizer.ConditionObject condition)
Проверяет, использует ли указанный ConditionObject этот синхронизатор в качестве блокировки.
Параметры:
condition — условие
Возвращает:
true, если условие принадлежит этому синхронизатору
Исключения:
NullPointerException — если условие равно null

hasWaiters

public final boolean hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)
Проверяет, ожидают ли какие-либо потоки указанного условия, связанного с этим синхронизатором. Обратите внимание: поскольку истечение времени ожидания и прерывания могут произойти в любой момент, возвращаемое значение true не гарантирует, что будущий вызов signal разбудит какие-либо потоки. Этот метод предназначен главным образом для мониторинга состояния системы.
Параметры:
condition — условие
Возвращает:
true, если есть ожидающие потоки
Исключения:
IllegalMonitorStateException — если монопольная синхронизация не удерживается
IllegalArgumentException — если указанное условие не связано с этим синхронизатором
NullPointerException — если условие равно null

getWaitQueueLength

public final int getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)
Возвращает оценку количества потоков, ожидающих указанного условия, связанного с этим синхронизатором. Обратите внимание: поскольку истечение времени ожидания и прерывания могут произойти в любой момент, эта оценка является лишь верхней границей фактического количества ожидающих потоков. Метод предназначен для мониторинга состояния системы, а не для управления синхронизацией.
Параметры:
condition — условие
Возвращает:
оценку количества ожидающих потоков
Исключения:
IllegalMonitorStateException — если монопольная синхронизация не удерживается
IllegalArgumentException — если указанное условие не связано с этим синхронизатором
NullPointerException — если условие равно null

getWaitingThreads

public final Collection<Thread> getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)
Возвращает коллекцию, содержащую потоки, которые могут ожидать указанного условия, связанного с этим синхронизатором. Поскольку фактический набор потоков может динамически изменяться во время формирования результата, возвращаемая коллекция является лишь наилучшей возможной оценкой. Элементы возвращаемой коллекции не упорядочены.
Параметры:
condition — условие
Возвращает:
коллекцию потоков
Исключения:
IllegalMonitorStateException — если монопольная синхронизация не удерживается
IllegalArgumentException — если указанное условие не связано с этим синхронизатором
NullPointerException — если условие равно null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, способы обхода проблем и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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