Spec-Zone.ru › OpenJDK 27

Класс SynchronousQueue<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.concurrent.SynchronousQueue<E>
Параметры типа:
E — тип элементов, хранящихся в этой очереди
Все реализованные интерфейсы:
Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
public class SynchronousQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable
Блокирующая очередь, в которой каждая операция вставки должна ожидать соответствующей операции удаления, выполняемой другим потоком, и наоборот. Синхронная очередь не имеет внутренней ёмкости, даже равной единице. Нельзя peek в синхронной очереди, поскольку элемент присутствует в ней только в момент попытки его извлечения; нельзя вставить элемент (с помощью любого метода), если другой поток не пытается его извлечь; нельзя выполнять итерацию, поскольку перебирать нечего. Головой очереди является элемент, который первый ожидающий поток-вставитель пытается добавить в очередь; если такого ожидающего потока нет, то ни один элемент не доступен для извлечения, и poll() вернёт null. Для других методов Collection (например, contains) SynchronousQueue ведёт себя как пустая коллекция. Эта очередь не допускает элементы null.

Синхронные очереди похожи на каналы rendezvous, используемые в CSP и Ada. Они хорошо подходят для схем передачи, в которых объект, работающий в одном потоке, должен синхронизироваться с объектом, работающим в другом потоке, чтобы передать ему информацию, событие или задачу.

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

Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator.

Этот класс является частью Java Collections Framework.

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

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

Конструктор Описание
SynchronousQueue()
Создаёт SynchronousQueue с политикой доступа без обеспечения справедливости.
SynchronousQueue(boolean fair)
Создаёт SynchronousQueue с указанной политикой справедливости.

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

Модификатор и тип Метод Описание
void clear()
Ничего не делает.
boolean contains(Object o)
Всегда возвращает false.
boolean containsAll(Collection<?> c)
Возвращает false, если только указанная коллекция не пуста.
int drainTo(Collection<? super E> c)
Удаляет из этой очереди все доступные элементы и добавляет их в указанную коллекцию.
int drainTo(Collection<? super E> c, int maxElements)
Удаляет из этой очереди не более указанного количества доступных элементов и добавляет их в указанную коллекцию.
boolean isEmpty()
Всегда возвращает true.
Iterator<E> iterator()
Возвращает пустой итератор, в котором hasNext всегда возвращает false.
boolean offer(E e)
Вставляет указанный элемент в эту очередь, если другой поток ожидает его получения.
boolean offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в эту очередь, при необходимости ожидая указанное время, пока другой поток его получит.
E peek()
Всегда возвращает null.
E poll()
Извлекает и удаляет голову этой очереди, если другой поток в данный момент делает элемент доступным.
E poll(long timeout, TimeUnit unit)
Извлекает и удаляет голову этой очереди, при необходимости ожидая указанное время, пока другой поток не вставит элемент.
void put(E e)
Добавляет указанный элемент в эту очередь, при необходимости ожидая, пока другой поток его получит.
int remainingCapacity()
Всегда возвращает ноль.
boolean remove(Object o)
Всегда возвращает false.
boolean removeAll(Collection<?> c)
Всегда возвращает false.
boolean retainAll(Collection<?> c)
Всегда возвращает false.
int size()
Всегда возвращает ноль.
Spliterator<E> spliterator()
Возвращает пустой сплитератор, в котором вызовы trySplit всегда возвращают null.
E take()
Извлекает и удаляет голову этой очереди, при необходимости ожидая, пока другой поток не вставит элемент.
Object[] toArray()
Возвращает массив нулевой длины.
<T> T[] toArray(T[] a)
Устанавливает null в нулевой элемент указанного массива (если длина массива больше нуля) и возвращает его.
String toString()
Всегда возвращает "[]".

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

add, addAll, element, remove
Модификатор и тип Метод Описание
boolean add(E e)
Вставляет указанный элемент в эту очередь, если это можно сделать немедленно, не нарушая ограничений ёмкости; при успешном выполнении возвращает true, а если свободного места сейчас нет — выбрасывает IllegalStateException.
boolean addAll(Collection<? extends E> c)
Добавляет в эту очередь все элементы указанной коллекции.
E element()
Извлекает, но не удаляет голову этой очереди.
E remove()
Извлекает и удаляет голову этой очереди.

Методы, объявленные в классе 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()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе BlockingQueue

add
Модификатор и тип Метод Описание
boolean add(E e)
Вставляет указанный элемент в эту очередь, если это можно сделать немедленно, не нарушая ограничений ёмкости; при успешном выполнении возвращает true, а если свободного места сейчас нет — выбрасывает IllegalStateException.

Методы, объявленные в интерфейсе Collection

equals, hashCode, parallelStream, removeIf, stream, toArray
Модификатор и тип Метод Описание
boolean equals(Object o)
Сравнивает указанный объект с этой коллекцией на равенство.
int hashCode()
Возвращает значение хеш-кода этой коллекции.
default Stream<E> parallelStream()
Возвращает, возможно, параллельный Stream, источником которого является эта коллекция.
default boolean removeIf(Predicate<? super E> filter)
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату (необязательная операция).
default Stream<E> stream()
Возвращает последовательный Stream, источником которого является эта коллекция.
default <T> T[] toArray(IntFunction<T[]> generator)
Возвращает массив, содержащий все элементы этой коллекции; для выделения возвращаемого массива используется предоставленная функция generator.

Методы, объявленные в интерфейсе Iterable

forEach
Модификатор и тип Метод Описание
default void forEach(Consumer<? super E> action)
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не вызовет исключение.

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

SynchronousQueue

public SynchronousQueue()
Создает SynchronousQueue с политикой доступа без учета справедливости.

SynchronousQueue

public SynchronousQueue(boolean fair)
Создает SynchronousQueue с указанной политикой справедливости.
Параметры:
fair — если значение true, ожидающие потоки конкурируют за доступ в порядке FIFO; в противном случае порядок не определен.

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

put

public void put(E e) throws InterruptedException
Добавляет указанный элемент в эту очередь, при необходимости ожидая, пока другой поток не получит его.
Определено в:
put в интерфейсе BlockingQueue<E>
Параметры:
e — добавляемый элемент
Исключения:
InterruptedException — если ожидание было прервано
NullPointerException — если указанный элемент равен null

offer

public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
Вставляет указанный элемент в эту очередь, при необходимости ожидая в течение указанного времени, пока другой поток не получит его.
Определено в:
offer в интерфейсе BlockingQueue<E>
Параметры:
e — добавляемый элемент
timeout — время ожидания до прекращения попыток, в единицах unit
unit — TimeUnit, определяющий интерпретацию параметра timeout
Возвращает:
true в случае успеха или false, если указанное время ожидания истекло до появления потребителя
Исключения:
InterruptedException — если ожидание было прервано
NullPointerException — если указанный элемент равен null

offer

public boolean offer(E e)
Вставляет указанный элемент в эту очередь, если другой поток ожидает его получения.
Определено в:
offer в интерфейсе BlockingQueue<E>
Определено в:
offer в интерфейсе Queue<E>
Параметры:
e — добавляемый элемент
Возвращает:
true, если элемент был добавлен в эту очередь, иначе false
Исключения:
NullPointerException — если указанный элемент равен null

take

public E take() throws InterruptedException
Извлекает и удаляет начало этой очереди, при необходимости ожидая, пока другой поток не вставит элемент.
Определено в:
take в интерфейсе BlockingQueue<E>
Возвращает:
начало этой очереди
Исключения:
InterruptedException — если ожидание было прервано

poll

public E poll(long timeout, TimeUnit unit) throws InterruptedException
Извлекает и удаляет начало этой очереди, при необходимости ожидая в течение указанного времени, пока другой поток не вставит элемент.
Определено в:
poll в интерфейсе BlockingQueue<E>
Параметры:
timeout — время ожидания до прекращения попыток, в единицах unit
unit — TimeUnit, определяющий интерпретацию параметра timeout
Возвращает:
начало этой очереди или null, если указанное время ожидания истекло, а элемент так и не появился
Исключения:
InterruptedException — если ожидание было прервано

poll

public E poll()
Извлекает и удаляет начало этой очереди, если другой поток в данный момент предоставляет элемент.
Определено в:
poll в интерфейсе Queue<E>
Возвращает:
начало этой очереди или null, если доступных элементов нет

isEmpty

public boolean isEmpty()
Всегда возвращает true. SynchronousQueue не имеет внутренней емкости.
Определено в:
isEmpty в интерфейсе Collection<E>
Переопределяет:
isEmpty в классе AbstractCollection<E>
Возвращает:
true

size

public int size()
Всегда возвращает ноль. SynchronousQueue не имеет внутренней емкости.
Определено в:
size в интерфейсе Collection<E>
Возвращает:
ноль

remainingCapacity

public int remainingCapacity()
Всегда возвращает ноль. SynchronousQueue не имеет внутренней емкости.
Определено в:
remainingCapacity в интерфейсе BlockingQueue<E>
Возвращает:
ноль

clear

public void clear()
Ничего не делает. SynchronousQueue не имеет внутренней емкости.
Определено в:
clear в интерфейсе Collection<E>
Переопределяет:
clear в классе AbstractQueue<E>

contains

public boolean contains(Object o)
Всегда возвращает false. SynchronousQueue не имеет внутренней емкости.
Определено в:
contains в интерфейсе BlockingQueue<E>
Определено в:
contains в интерфейсе Collection<E>
Переопределяет:
contains в классе AbstractCollection<E>
Параметры:
o — элемент
Возвращает:
false

remove

public boolean remove(Object o)
Всегда возвращает false. SynchronousQueue не имеет внутренней емкости.
Определено в:
remove в интерфейсе BlockingQueue<E>
Определено в:
remove в интерфейсе Collection<E>
Переопределяет:
remove в классе AbstractCollection<E>
Параметры:
o — удаляемый элемент
Возвращает:
false

containsAll

public boolean containsAll(Collection<?> c)
Возвращает false, если только переданная коллекция не пуста. SynchronousQueue не имеет внутренней емкости.
Определено в:
containsAll в интерфейсе Collection<E>
Переопределяет:
containsAll в классе AbstractCollection<E>
Параметры:
c — коллекция
Возвращает:
false, если переданная коллекция не пуста
См. также:
  • AbstractCollection.contains(Object)

removeAll

public boolean removeAll(Collection<?> c)
Всегда возвращает false. SynchronousQueue не имеет внутренней емкости.
Определено в:
removeAll в интерфейсе Collection<E>
Переопределяет:
removeAll в классе AbstractCollection<E>
Параметры:
c — коллекция
Возвращает:
false
См. также:
  • AbstractCollection.remove(Object)
  • AbstractCollection.contains(Object)

retainAll

public boolean retainAll(Collection<?> c)
Всегда возвращает false. SynchronousQueue не имеет внутренней емкости.
Определено в:
retainAll в интерфейсе Collection<E>
Переопределяет:
retainAll в классе AbstractCollection<E>
Параметры:
c — коллекция
Возвращает:
false
См. также:
  • AbstractCollection.remove(Object)
  • AbstractCollection.contains(Object)

peek

public E peek()
Всегда возвращает null. SynchronousQueue не возвращает элементы, если поток явно не ожидает их получения.
Определено в:
peek в интерфейсе Queue<E>
Возвращает:
null

iterator

public Iterator<E> iterator()
Возвращает пустой итератор, у которого hasNext всегда возвращает false.
Определено в:
iterator в интерфейсе Collection<E>
Определено в:
iterator в интерфейсе Iterable<E>
Определено в:
iterator в классе AbstractCollection<E>
Возвращает:
пустой итератор

spliterator

public Spliterator<E> spliterator()
Возвращает пустой сплитератор, в котором вызовы trySplit всегда возвращают null.
Определено в:
spliterator в интерфейсе Collection<E>
Определено в:
spliterator в интерфейсе Iterable<E>
Возвращает:
пустой сплитератор
Начиная с:
1.8

toArray

public Object[] toArray()
Возвращает массив нулевой длины.
Определено в:
toArray в интерфейсе Collection<E>
Переопределяет:
toArray в классе AbstractCollection<E>
Возвращает:
массив нулевой длины

toArray

public <T> T[] toArray(T[] a)
Устанавливает для нулевого элемента указанного массива значение null (если длина массива больше нуля) и возвращает этот массив.
Определено в:
toArray в интерфейсе Collection<E>
Переопределяет:
toArray в классе AbstractCollection<E>
Параметры типа:
T — тип элементов массива, в котором будет храниться коллекция
Параметры:
a — массив
Возвращает:
указанный массив
Исключения:
NullPointerException — если указанный массив равен null

toString

public String toString()
Всегда возвращает "[]".
Переопределяет:
toString в классе AbstractCollection<E>
Возвращает:
"[]"

drainTo

public int drainTo(Collection<? super E> c)
Описание скопировано из интерфейса: BlockingQueue
Удаляет все доступные элементы из этой очереди и добавляет их в указанную коллекцию. Эта операция может быть эффективнее, чем многократный вызов poll для этой очереди. Сбой при попытке добавить элементы в коллекцию c может привести к тому, что после выброса соответствующего исключения элементы окажутся ни в одной, в одной или в обеих коллекциях. Попытка перенести элементы очереди в саму себя приводит к IllegalArgumentException. Кроме того, поведение этой операции не определено, если указанная коллекция изменяется во время ее выполнения.
Определено в:
drainTo в интерфейсе BlockingQueue<E>
Параметры:
c — коллекция, в которую следует перенести элементы
Возвращает:
количество перенесенных элементов
Исключения:
UnsupportedOperationException — если указанная коллекция не поддерживает добавление элементов
ClassCastException — если класс элемента этой очереди препятствует его добавлению в указанную коллекцию
NullPointerException — если указанная коллекция равна null
IllegalArgumentException — если указанная коллекция является этой очередью или какое-либо свойство элемента этой очереди препятствует его добавлению в указанную коллекцию

drainTo

public int drainTo(Collection<? super E> c, int maxElements)
Описание скопировано из интерфейса: BlockingQueue
Удаляет из этой очереди не более указанного количества доступных элементов и добавляет их в указанную коллекцию. Сбой при попытке добавить элементы в коллекцию c может привести к тому, что после выброса соответствующего исключения элементы окажутся ни в одной, в одной или в обеих коллекциях. Попытка перенести элементы очереди в саму себя приводит к IllegalArgumentException. Кроме того, поведение этой операции не определено, если указанная коллекция изменяется во время ее выполнения.
Определено в:
drainTo в интерфейсе BlockingQueue<E>
Параметры:
c — коллекция, в которую следует перенести элементы
maxElements — максимальное количество элементов для переноса
Возвращает:
количество перенесенных элементов
Исключения:
UnsupportedOperationException — если указанная коллекция не поддерживает добавление элементов
ClassCastException — если класс элемента этой очереди препятствует его добавлению в указанную коллекцию
NullPointerException — если указанная коллекция равна null
IllegalArgumentException — если указанная коллекция является этой очередью или какое-либо свойство элемента этой очереди препятствует его добавлению в указанную коллекцию

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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