Spec-Zone.ru › OpenJDK 21

Класс 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
Очередь с блокировкой (blocking queue), в которой каждая операция вставки должна ждать соответствующей операции удаления другим потоком, и наоборот. Очередь с синхронизацией не имеет внутренней ёмкости, даже ёмкости в один элемент. Вы не можете peek в очереди с синхронизацией, потому что элемент присутствует только при попытке его удалить; вы не можете вставить элемент (используя любой метод), пока другой поток не пытается его удалить; итерация невозможна, так как нет ничего для итерации. Голова очереди — это элемент, который первый поток, пытающийся вставить в очередь, пытается добавить в очередь; если такого потока нет, то элемент недоступен для удаления и poll() вернёт null. Для целей других Collection методов (например, contains), очередь с синхронизацией действует как пустое множество. Эта очередь не допускает null элементов.

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

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

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

Этот класс является членом Java Collections Framework.

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

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

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

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

Модификатор и тип Метод Описание
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()
Всегда возвращает "[]".

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

add, addAll, element, remove

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

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

add

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

addAll, equals, hashCode, parallelStream, removeIf, stream, toArray

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

forEach

Методы, объявленные в интерфейсе java.util.Queue

element, remove

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

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
Удаляет все доступные элементы из этой очереди и добавляет их в заданную коллекцию. Эта операция может быть более эффективной, чем многократное опробование этой очереди. Ошибка, возникшая при попытке добавить элементы в коллекцию 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 - если указанная коллекция является этой очередью, или некоторые свойства элемента этой очереди препятствуют его добавлению в указанную коллекцию

© 1993, 2023, 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/21/docs/api/java.base/java/util/concurrent/SynchronousQueue.html

Spec-Zone.ru

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