Spec-Zone.ru › OpenJDK 24

Класс 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 (первым вошел, первым вышел). Голова очереди — это элемент, который находится в очереди дольше всего. Хвост очереди — это элемент, который находится в очереди меньше всего времени. Новые элементы вставляются в хвост очереди, а операции извлечения из очереди получают элементы в голове очереди. Связанные очереди обычно имеют более высокую пропускную способность, чем очереди на основе массивов, но предсказуемость производительности в большинстве многопоточных приложений ниже.

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

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

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

С момента:
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()
Создаёт 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>
Возвращает:
количество элементов в этой очереди

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 — если тип времени выполнения указанного массива не является супертипом типа времени выполнения каждого элемента в этой очереди
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, 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.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/LinkedBlockingQueue.html

Spec-Zone.ru

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