Spec-Zone.ru › OpenJDK 21

Класс LinkedBlockingQueue<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.concurrent.LinkedBlockingQueue<E>
Параметры типа:
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.

С:
1.5
См. также:
  • Форматированный вывод

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

Конструктор Описание
LinkedBlockingQueue()
Создает LinkedBlockingQueue с емкостью Integer.MAX_VALUE.
LinkedBlockingQueue(int capacity)
Создает LinkedBlockingQueue с заданной (фиксированной) емкостью.
LinkedBlockingQueue(Collection<? extends E> c)
Создает LinkedBlockingQueue с емкостью Integer.MAX_VALUE, изначально содержащую элементы заданного набора, добавленные в порядке обхода итератора набора.

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

Модификатор и тип Метод Описание
void clear()
Атомарно удаляет все элементы из этой очереди.
boolean contains(Object o)
Возвращает true если эта очередь содержит указанный элемент.
int drainTo(Collection<? super E> c)
Удаляет все доступные элементы из этой очереди и добавляет их в заданный набор.
int drainTo(Collection<? super E> c, int maxElements)
Удаляет не более заданного количества доступных элементов из этой очереди и добавляет их в заданный набор.
void forEach(Consumer<? super E> action)
Выполняет заданное действие для каждого элемента Iterable до тех пор, пока все элементы не будут обработаны или действие не выбросит исключение.
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)
Удаляет одну копию указанного элемента из этой очереди, если он присутствует.
boolean removeAll(Collection<?> c)
Удаляет все элементы этого набора, которые также содержатся в указанном наборе (необязательная операция).
boolean removeIf(Predicate<? super E> filter)
Удаляет все элементы этого набора, которые удовлетворяют заданному предикату.
boolean retainAll(Collection<?> c)
Сохраняет только элементы этого набора, которые содержатся в указанном наборе (необязательная операция).
int size()
Возвращает количество элементов в этой очереди.
Spliterator<E> spliterator()
Возвращает Spliterator по элементам в этой очереди.
E take()
Возвращает и удаляет голову этой очереди, ожидая, если необходимо, пока элемент не станет доступным.
Object[] toArray()
Возвращает массив, содержащий все элементы этой очереди в правильной последовательности.
<T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы этой очереди в правильной последовательности; тип времени выполнения возвращенного массива — тип указанного массива.

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

add, addAll, element, remove

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

containsAll, isEmpty, toString

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

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

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

add

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

addAll, containsAll, equals, hashCode, isEmpty, parallelStream, stream, toArray

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

element, remove

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

LinkedBlockingQueue

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

LinkedBlockingQueue

public LinkedBlockingQueue(int capacity)
Создаёт очередь с заданной (фиксированной) ёмкостью.
Параметры:
capacity - ёмкость этой очереди
Исключения:
IllegalArgumentException - если capacity не больше нуля

LinkedBlockingQueue

public LinkedBlockingQueue(Collection<? extends E> c)
Создаёт очередь с ёмкостью Integer.MAX_VALUE, изначально содержащую элементы заданной коллекции, добавленные в порядке обхода итератора коллекции.
Параметры:
c - коллекция элементов для начального содержимого
Исключения:
NullPointerException - если указанная коллекция или любой из её элементов равны null

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

size

public int size()
Возвращает количество элементов в этой очереди.
Определено в:
size в интерфейсе Collection<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 в интерфейсе BlockingQueue<E>
Определено в:
remove в интерфейсе Collection<E>
Переопределяет:
remove в классе AbstractCollection<E>
Параметры:
o - элемент, который нужно удалить из этой очереди, если он присутствует
Возвращает:
true если эта очередь изменилась в результате вызова

contains

public boolean contains(Object o)
Возвращает true , если эта очередь содержит указанный элемент. Более формально, возвращает true тогда и только тогда, когда эта очередь содержит по крайней мере один элемент e такой, что o.equals(e).
Определено в:
contains в интерфейсе BlockingQueue<E>
Определено в:
contains в интерфейсе Collection<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().
Specified by:
toArray в интерфейсе Collection<E>
Overrides:
toArray в классе AbstractCollection<E>
Type Parameters:
T - тип компонента массива для хранения коллекции
Parameters:
a - массив, в который будут помещены элементы очереди, если он достаточно большой; в противном случае для этой цели выделяется новый массив того же типа
Returns:
массив, содержащий все элементы этой очереди
Throws:
ArrayStoreException - если тип runtime указанного массива не является надтипом типа runtime каждого элемента в этой очереди
NullPointerException - если указанный массив равен null

clear

public void clear()
Атомарно удаляет все элементы из этой очереди. Очередь будет пустой после возврата этого вызова.
Specified by:
clear в интерфейсе Collection<E>
Overrides:
clear в классе AbstractQueue<E>

drainTo

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

drainTo

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

iterator

public Iterator<E> iterator()
Возвращает итератор по элементам в этой очереди в правильном порядке. Элементы будут возвращены в порядке от первого (начала) к последнему (концу).

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

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

spliterator

public Spliterator<E> spliterator()
Возвращает Spliterator по элементам в этой очереди.

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

Этот спитератор Spliterator отчитывается как Spliterator.CONCURRENT, Spliterator.ORDERED и Spliterator.NONNULL.

Specified by:
spliterator в интерфейсе Collection<E>
Specified by:
spliterator в интерфейсе Iterable<E>
Implementation Note:
Этот Spliterator реализует trySplit для обеспечения ограниченного параллелизма.
Returns:
Spliterator по элементам в этой очереди
Since:
1.8

forEach

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

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

Specified by:
forEach в интерфейсе Iterable<E>
Parameters:
action - действие, которое необходимо выполнить для каждого элемента
Throws:
NullPointerException - если указанное действие равно null

removeIf

public boolean removeIf(Predicate<? super E> filter)
Описание скопировано из интерфейса: Collection
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату. Ошибки или исключительные ситуации во время итерации или предикатом передаются вызывающему методу.
Specified by:
removeIf в интерфейсе Collection<E>
Parameters:
filter - предикат, возвращающий true для элементов, подлежащих удалению
Returns:
true если были удалены какие-либо элементы
Throws:
NullPointerException - если указанный фильтр равен null

removeAll

public boolean removeAll(Collection<?> c)
Описание скопировано из класса: AbstractCollection
Удаляет все элементы этой коллекции, которые также содержатся в заданной коллекции (необязательная операция). После возврата этого вызова эта коллекция не будет содержать элементов, общих с указанной коллекцией.
Specified by:
removeAll в интерфейсе Collection<E>
Overrides:
removeAll в классе AbstractCollection<E>
Parameters:
c - коллекция, содержащая элементы, которые нужно удалить из этой коллекции
Returns:
true если эта коллекция изменилась в результате вызова
Throws:
NullPointerException - если эта коллекция содержит один или несколько null-элементов, а указанная коллекция не поддерживает null-элементы (необязательно), или если указанная коллекция равна null
See Also:
  • AbstractCollection.remove(Object)
  • AbstractCollection.contains(Object)

retainAll

public boolean retainAll(Collection<?> c)
Описание, скопированное из класса: AbstractCollection
Оставляет только элементы из этого набора, которые содержатся в указанном наборе (дополнительная операция). Другими словами, удаляет из этого набора все элементы, которые не содержатся в указанном наборе.
Указано в:
retainAll в интерфейсе Collection<E>
Переопределяет:
retainAll в классе AbstractCollection<E>
Параметры:
c - набор, содержащий элементы, которые необходимо сохранить в этом наборе
Возвращает:
true если этот набор изменился в результате вызова
Выбрасывает:
NullPointerException - если этот набор содержит один или несколько нулевых элементов, а указанный набор не допускает нулевых элементов (дополнительное) или если указанный набор равен null
См. также:
  • AbstractCollection.remove(Object)
  • AbstractCollection.contains(Object)

© 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/LinkedBlockingQueue.html

Spec-Zone.ru

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