Spec-Zone.ru › OpenJDK 8

Класс SynchronousQueue<E>

  • java.lang.Object
    • java.util.AbstractCollection<E>
      • java.util.AbstractQueue<E>
        • java.util.concurrent.SynchronousQueue<E>
Type Parameters:
E - тип элементов, хранящихся в этом наборе
Все реализованные интерфейсы:
Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>

public class SynchronousQueue<E>
extends AbstractQueue<E>
implements BlockingQueue<E>, Serializable

A блокирующая очередь в которой каждая операция вставки должна ждать соответствующей операции удаления другим потоком, и наоборот. Очередь синхронизации не имеет внутренней емкости, даже емкости в один элемент. Вы не можете peek в очереди синхронизации, потому что элемент присутствует только когда вы пытаетесь его удалить; вы не можете вставить элемент (используя любой метод), если другой поток не пытается его удалить; вы не можете выполнить итерацию, так как нет ничего, что можно перебирать. Голова очереди — это элемент, который первая потоковая нить, пытающаяся добавить элемент в очередь, пытается добавить в очередь; если такой нити нет, то элемент недоступен для удаления и poll() вернёт null. Для целей других Collection методов (например, contains), очередь синхронизации действует как пустой набор. Эта очередь не допускает null элементов.

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

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

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

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

Since:
1.5
See Also:
Serialized Form

Конструкторы

Конструктор и описание
SynchronousQueue()

Создаёт SynchronousQueue с политикой доступа nonfair.

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()

Возвращает пустой spliterator, в котором вызовы Spliterator.trySplit() всегда возвращают null.

E take()

Получает и удаляет голову этой очереди, ожидая, если необходимо, пока другой поток её вставит.

Object[] toArray()

Возвращает массив длины ноль.

<T> T[] toArray(T[] a)

Устанавливает нулевой элемент заданного массива в null (если длина массива отлична от нуля) и возвращает его.

Методы унаследованные от класса java.util.AbstractQueue

add, addAll, element, remove

Методы унаследованные от класса java.util.AbstractCollection

toString

Методы унаследованные от класса java.lang.Object

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

Методы унаследованные от интерфейса java.util.concurrent.BlockingQueue

add

Методы унаследованные от интерфейса java.util.Queue

element, remove

Методы унаследованные от интерфейса java.util.Collection

addAll, equals, hashCode, parallelStream, removeIf, stream

Методы унаследованные от интерфейса java.lang.Iterable

forEach

Конструкторы

SynchronousQueue

public SynchronousQueue()

Создаёт очередь SynchronousQueue с политикой доступа nonfair.

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>
Унаследовано от:
size в классе AbstractCollection<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 в интерфейсе Collection<E>
Унаследовано от:
contains в интерфейсе BlockingQueue<E>
Переопределяет:
contains в классе AbstractCollection<E>
Параметры:
o - элемент
Возвращает:
false

remove

public boolean remove(Object o)

Всегда возвращает false. У очереди SynchronousQueue нет внутренней вместимости.

Унаследовано от:
remove в интерфейсе Collection<E>
Унаследовано от:
remove в интерфейсе BlockingQueue<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 в интерфейсе Iterable<E>
Унаследовано от:
iterator в интерфейсе Collection<E>
Унаследовано от:
iterator в классе AbstractCollection<E>
Возвращает:
пустой итератор

spliterator

public Spliterator<E> spliterator()

Возвращает пустой спитератор, в котором вызовы Spliterator.trySplit() всегда возвращают null.

Унаследовано от:
spliterator в интерфейсе Iterable<E>
Унаследовано от:
spliterator в интерфейсе Collection<E>
Возвращает:
пустой спитератор
С момента:
1.8

toArray

public Object[] toArray()

Возвращает массив длиной 0.

Унаследовано от:
toArray в интерфейсе Collection<E>
Переопределяет:
toArray в классе AbstractCollection<E>
Возвращает:
массив длиной 0

toArray

public <T> T[] toArray(T[] a)

Устанавливает нулевой элемент указанного массива в null (если массив имеет ненулевую длину) и возвращает его.

Унаследовано от:
toArray в интерфейсе Collection<E>
Переопределяет:
toArray в классе AbstractCollection<E>
Параметры типа:
T - тип времени выполнения массива для хранения коллекции
Параметры:
a - массив
Возвращает:
указанный массив
Исключения:
NullPointerException - если указанный массив null

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, 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