Класс 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 |
Создаёт SynchronousQueue с указанной политикой справедливости. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
clear() |
Ничего не делает. |
boolean |
contains |
Всегда возвращает false. |
boolean |
containsAll |
Возвращает false, если только указанная коллекция не пуста. |
int |
drainTo |
Удаляет из этой очереди все доступные элементы и добавляет их в указанную коллекцию. |
int |
drainTo |
Удаляет из этой очереди не более указанного количества доступных элементов и добавляет их в указанную коллекцию. |
boolean |
isEmpty() |
Всегда возвращает true. |
Iterator |
iterator() |
Возвращает пустой итератор, в котором hasNext всегда возвращает false. |
boolean |
offer |
Вставляет указанный элемент в эту очередь, если другой поток ожидает его получения. |
boolean |
offer |
Вставляет указанный элемент в эту очередь, при необходимости ожидая указанное время, пока другой поток его получит. |
E |
peek() |
Всегда возвращает null. |
E |
poll() |
Извлекает и удаляет голову этой очереди, если другой поток в данный момент делает элемент доступным. |
E |
poll |
Извлекает и удаляет голову этой очереди, при необходимости ожидая указанное время, пока другой поток не вставит элемент. |
void |
put |
Добавляет указанный элемент в эту очередь, при необходимости ожидая, пока другой поток его получит. |
int |
remainingCapacity() |
Всегда возвращает ноль. |
boolean |
remove |
Всегда возвращает false. |
boolean |
removeAll |
Всегда возвращает false. |
boolean |
retainAll |
Всегда возвращает false. |
int |
size() |
Всегда возвращает ноль. |
Spliterator |
spliterator() |
Возвращает пустой сплитератор, в котором вызовы trySplit всегда возвращают null. |
E |
take() |
Извлекает и удаляет голову этой очереди, при необходимости ожидая, пока другой поток не вставит элемент. |
Object[] |
toArray() |
Возвращает массив нулевой длины. |
<T> T[] |
toArray |
Устанавливает null в нулевой элемент указанного массива (если длина массива больше нуля) и возвращает его. |
String |
toString() |
Всегда возвращает "[]". |
Методы, объявленные в классе AbstractQueue
add, addAll, element, remove | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в эту очередь, если это можно сделать немедленно, не нарушая ограничений ёмкости; при успешном выполнении возвращает true, а если свободного места сейчас нет — выбрасывает IllegalStateException. |
boolean |
addAll |
Добавляет в эту очередь все элементы указанной коллекции. |
E |
element() |
Извлекает, но не удаляет голову этой очереди. |
E |
remove() |
Извлекает и удаляет голову этой очереди. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и планируется к удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе BlockingQueue
add | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в эту очередь, если это можно сделать немедленно, не нарушая ограничений ёмкости; при успешном выполнении возвращает true, а если свободного места сейчас нет — выбрасывает IllegalStateException. |
Методы, объявленные в интерфейсе Collection
equals, hashCode, parallelStream, removeIf, stream, toArray | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает указанный объект с этой коллекцией на равенство. |
int |
hashCode() |
Возвращает значение хеш-кода этой коллекции. |
default Stream |
parallelStream() |
Возвращает, возможно, параллельный Stream, источником которого является эта коллекция. |
default boolean |
removeIf |
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату (необязательная операция). |
default Stream |
stream() |
Возвращает последовательный Stream, источником которого является эта коллекция. |
default <T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой коллекции; для выделения возвращаемого массива используется предоставленная функция generator. |
Подробное описание конструкторов
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
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, если переданная коллекция не пуста - См. также:
removeAll
public boolean removeAll(Collection<?> c)
false. SynchronousQueue не имеет внутренней емкости.- Определено в:
-
removeAllв интерфейсеCollection<E> - Переопределяет:
-
removeAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция - Возвращает:
false- См. также:
retainAll
public boolean retainAll(Collection<?> c)
false. SynchronousQueue не имеет внутренней емкости.- Определено в:
-
retainAllв интерфейсеCollection<E> - Переопределяет:
-
retainAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция - Возвращает:
false- См. также:
peek
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)
BlockingQueuec может привести к тому, что после выброса соответствующего исключения элементы окажутся ни в одной, в одной или в обеих коллекциях. Попытка перенести элементы очереди в саму себя приводит к IllegalArgumentException. Кроме того, поведение этой операции не определено, если указанная коллекция изменяется во время ее выполнения.- Определено в:
-
drainToв интерфейсеBlockingQueue<E> - Параметры:
-
c— коллекция, в которую следует перенести элементы - Возвращает:
- количество перенесенных элементов
- Исключения:
-
UnsupportedOperationException— если указанная коллекция не поддерживает добавление элементов -
ClassCastException— если класс элемента этой очереди препятствует его добавлению в указанную коллекцию -
NullPointerException— если указанная коллекция равна null -
IllegalArgumentException— если указанная коллекция является этой очередью или какое-либо свойство элемента этой очереди препятствует его добавлению в указанную коллекцию
drainTo
public int drainTo(Collection<? super E> c, int maxElements)
BlockingQueuec может привести к тому, что после выброса соответствующего исключения элементы окажутся ни в одной, в одной или в обеих коллекциях. Попытка перенести элементы очереди в саму себя приводит к IllegalArgumentException. Кроме того, поведение этой операции не определено, если указанная коллекция изменяется во время ее выполнения.- Определено в:
-
drainToв интерфейсеBlockingQueue<E> - Параметры:
-
c— коллекция, в которую следует перенести элементы -
maxElements— максимальное количество элементов для переноса - Возвращает:
- количество перенесенных элементов
- Исключения:
-
UnsupportedOperationException— если указанная коллекция не поддерживает добавление элементов -
ClassCastException— если класс элемента этой очереди препятствует его добавлению в указанную коллекцию -
NullPointerException— если указанная коллекция равна null -
IllegalArgumentException— если указанная коллекция является этой очередью или какое-либо свойство элемента этой очереди препятствует его добавлению в указанную коллекцию
© 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.