Spec-Zone.ru › OpenJDK 8

Класс LinkedBlockingQueue<E>

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

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

Необязательно ограниченная блокирующая очередь на основе связанных узлов. Эта очередь упорядочивает элементы FIFO (первым вошел, первым вышел). Голова очереди — это элемент, который находится в очереди дольше всего. Хвост очереди — это элемент, который находится в очереди меньше всего времени. Новые элементы вставляются в конец очереди, а операции извлечения из очереди получают элементы в начале очереди. Очереди на основе связанных узлов обычно имеют более высокую пропускную способность, чем очереди на основе массивов, но их производительность в большинстве многопоточных приложений менее предсказуема.

Необязательный аргумент конструктора, определяющий ограничение по емкости, служит для предотвращения чрезмерного расширения очереди. Емкость, если не указана, равна Integer.MAX_VALUE. Связанные узлы динамически создаются при каждой вставке, если это не приведет к превышению емкости очереди.

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

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

С момента:
1.5
См. также:
Serialized Form

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

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

Создаёт очередь LinkedBlockingQueue с емкостью Integer.MAX_VALUE.

LinkedBlockingQueue(Collection<? extends E> c)

Создаёт очередь LinkedBlockingQueue с емкостью Integer.MAX_VALUE, которая изначально содержит элементы заданной коллекции, добавленные в порядке обхода итератора коллекции.

LinkedBlockingQueue(int capacity)

Создаёт очередь LinkedBlockingQueue с заданной (фиксированной) емкостью.

Методы

Модификатор и тип Метод и описание
void clear()

Атомарно удаляет все элементы из этой очереди.

boolean contains(Object o)

Возвращает true , если эта очередь содержит указанный элемент.

int drainTo(Collection<? super E> c)

Удаляет все доступные элементы из этой очереди и добавляет их в заданную коллекцию.

int drainTo(Collection<? super E> c, int maxElements)

Удаляет не более заданного количества доступных элементов из этой очереди и добавляет их в заданную коллекцию.

Iterator<E> iterator()

Возвращает итератор по элементам в этой очереди в правильной последовательности.

boolean offer(E e)

Вставляет указанный элемент в конец этой очереди, если это возможно сделать немедленно без превышения емкости очереди, возвращая true при успехе и false , если эта очередь заполнена.

boolean offer(E e, long timeout, TimeUnit unit)

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

E peek()

Возвращает, но не удаляет, голову этой очереди или возвращает null , если эта очередь пуста.

E poll()

Возвращает и удаляет голову этой очереди или возвращает null , если эта очередь пуста.

E poll(long timeout, TimeUnit unit)

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

void put(E e)

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

int remainingCapacity()

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

boolean remove(Object o)

Удаляет единственный экземпляр указанного элемента из этой очереди, если он присутствует.

int size()

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

Spliterator<E> spliterator()

Возвращает Spliterator по элементам в этой очереди.

E take()

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

Object[] toArray()

Возвращает массив, содержащий все элементы в этой очереди в правильной последовательности.

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

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

String toString()

Возвращает строковое представление этой коллекции.

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

add, addAll, element, remove

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

containsAll, isEmpty, removeAll, retainAll

Методы, унаследованные от класса 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, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, stream

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

forEach

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

LinkedBlockingQueue

public LinkedBlockingQueue()

Создаёт очередь LinkedBlockingQueue с ёмкостью Integer.MAX_VALUE.

LinkedBlockingQueue

public LinkedBlockingQueue(int capacity)

Создаёт очередь LinkedBlockingQueue с заданной (фиксированной) ёмкостью.

Параметры:
capacity - ёмкость этой очереди
Исключения:
IllegalArgumentException - если capacity не больше нуля

LinkedBlockingQueue

public LinkedBlockingQueue(Collection<? extends E> c)

Создаёт очередь LinkedBlockingQueue с ёмкостью Integer.MAX_VALUE, которая изначально содержит элементы заданного набора, добавленные в порядке обхода итератора набора.

Параметры:
c - набор элементов, которые изначально должны содержаться в очереди
Исключения:
NullPointerException - если указанный набор или любой из его элементов равны null

Методы

size

public int size()

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

Определено в:
size в интерфейсе Collection<E>
Определено в:
size в классе AbstractCollection<E>
Возвращает:
количество элементов в этой очереди

remainingCapacity

public int remainingCapacity()

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

Обратите внимание, что вы не всегда можете сказать, будет ли попытка вставить элемент успешной, просмотрев remainingCapacity, потому что может случиться так, что другой поток собирается вставить или удалить элемент.

Определено в:
remainingCapacity в интерфейсе BlockingQueue<E>
Возвращает:
оставшуюся ёмкость

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)

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

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

take

public E take()
       throws InterruptedException

Описание скопировано из интерфейса: BlockingQueue

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

Определено в:
take в интерфейсе BlockingQueue<E>
Возвращает:
голова этой очереди
Исключения:
InterruptedException - если прервано ожидание

poll

public E poll(long timeout,
              TimeUnit unit)
       throws InterruptedException

Описание скопировано из интерфейса: BlockingQueue

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

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

poll

public E poll()

Описание скопировано из интерфейса: Queue

Извлекает и удаляет голову этой очереди или возвращает null если эта очередь пуста.

Определено в:
poll в интерфейсе Queue<E>
Возвращает:
голова этой очереди или null если эта очередь пуста

peek

public E peek()

Описание скопировано из интерфейса: Queue

Извлекает, но не удаляет, голову этой очереди или возвращает null если эта очередь пуста.

Определено в:
peek в интерфейсе Queue<E>
Возвращает:
голова этой очереди или null если эта очередь пуста

remove

public boolean remove(Object o)

Удаляет один экземпляр указанного элемента из этой очереди, если он присутствует. Более формально, удаляет элемент e такой, что o.equals(e), если эта очередь содержит один или более таких элементов. Возвращает true если эта очередь содержала указанный элемент (или эквивалентно, если эта очередь изменилась в результате вызова).

Определено в:
remove в интерфейсе Collection<E>
Определено в:
remove в интерфейсе BlockingQueue<E>
Переопределяет:
remove в классе AbstractCollection<E>
Параметры:
o - элемент, который нужно удалить из этой очереди, если он присутствует
Возвращает:
true если эта очередь изменилась в результате вызова

contains

public boolean contains(Object o)

Возвращает true если эта очередь содержит указанный элемент. Более формально, возвращает true тогда и только тогда, когда эта очередь содержит по меньшей мере один элемент e такой, что o.equals(e).

Определено в:
contains в интерфейсе Collection<E>
Определено в:
contains в интерфейсе BlockingQueue<E>
Переопределяет:
contains в классе AbstractCollection<E>
Параметры:
o - объект, который нужно проверить на наличие в этой очереди
Возвращает:
true если эта очередь содержит указанный элемент

toArray

public Object[] toArray()

Возвращает массив, содержащий все элементы этой очереди в правильной последовательности.

Возвращаемый массив будет «безопасным» в том смысле, что к нему не сохраняются ссылки этой очереди. (Другими словами, этот метод должен выделить новый массив). Таким образом, вызывающая сторона свободна изменять возвращаемый массив.

Этот метод действует как мост между основанными на массивах и основанными на коллекциях API.

Определено в:
toArray в интерфейсе Collection<E>
Переопределяет:
toArray в классе AbstractCollection<E>
Возвращает:
массив, содержащий все элементы этой очереди

toArray

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

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

Если эта очередь помещается в указанный массив с избытком места (т. е. массив имеет больше элементов, чем эта очередь), элемент в массиве сразу после конца очереди устанавливается в null.

Как и метод toArray(), этот метод действует как мост между основанными на массивах и основанными на коллекциях API. Кроме того, этот метод позволяет точно управлять типом возвращаемого массива и в некоторых случаях может использоваться для экономии затрат на выделение памяти.

Предположим, что x — это очередь, которая, как известно, содержит только строки. Следующий код может использоваться для вывода очереди в новый выделенный массив типа String:

String[] y = x.toArray(new String[0]);
Обратите внимание, что toArray(new Object[0]) идентично по функции toArray().
Указано в:
toArray в интерфейсе Collection<E>
Переопределяет:
toArray в классе AbstractCollection<E>
Параметры типа:
T - тип времени выполнения массива для хранения коллекции
Параметры:
a - массив, в который должны быть помещены элементы очереди, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа времени выполнения
Возвращает:
массив, содержащий все элементы в этой очереди
Выбрасывает:
ArrayStoreException - если тип времени выполнения указанного массива не является супертипом типа времени выполнения каждого элемента в этой очереди
NullPointerException - если указанный массив null

toString

public String toString()

Описание скопировано из класса: AbstractCollection

Возвращает строковое представление этой коллекции. Строковое представление состоит из списка элементов коллекции в порядке их возвращения итератором, заключенными в квадратные скобки ("[]"). Смежные элементы разделены символами ", " (запятая и пробел). Элементы преобразуются в строки как в String.valueOf(Object).

Переопределяет:
toString в классе AbstractCollection<E>
Возвращает:
строковое представление этой коллекции

clear

public void clear()

Атомарно удаляет все элементы из этой очереди. Очередь будет пустой после возврата этого вызова.

Указано в:
clear в интерфейсе Collection<E>
Переопределяет:
clear в классе AbstractQueue<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 - если заданная коллекция является этой очередью или некоторые свойства элемента этой очереди не позволяют добавить его в заданную коллекцию

iterator

public Iterator<E> iterator()

Возвращает итератор по элементам в этой очереди в правильном порядке. Элементы будут возвращаться в порядке от первого (головка) до последнего (хвост).

Возвращаемый итератор слабо согласован.

Указано в:
iterator в интерфейсе Iterable<E>
Указано в:
iterator в интерфейсе Collection<E>
Указано в:
iterator в классе AbstractCollection<E>
Возвращает:
итератор по элементам в этой очереди в правильном порядке

spliterator

public Spliterator<E> spliterator()

Возвращает Spliterator по элементам в этой очереди.

Возвращаемый спитератор слабо согласован.

Этот Spliterator сообщает Spliterator.CONCURRENT, Spliterator.ORDERED и Spliterator.NONNULL.

Указано в:
spliterator в интерфейсе Iterable<E>
Указано в:
spliterator в интерфейсе Collection<E>
Примечание реализации:
Этот Spliterator реализует trySplit для разрешения ограниченной параллельности.
Возвращает:
Spliterator по элементам в этой очереди
С:
1.8

© 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