Класс LinkedBlockingQueue<E>
- Параметры типа:
E- тип элементов, хранящихся в этой очереди
- Все реализуемые интерфейсы:
Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
public class LinkedBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable
Необязательный аргумент конструктора, задающий ограничение ёмкости, позволяет предотвратить чрезмерное увеличение очереди. Если ёмкость не указана, она равна Integer.MAX_VALUE. Связанные узлы создаются динамически при каждой вставке, если это не приведёт к превышению ёмкости очереди.
Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator.
Этот класс является частью Java Collections Framework.
- Начиная с версии:
- 1.5
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
LinkedBlockingQueue() |
Создаёт LinkedBlockingQueue с ёмкостью Integer.MAX_VALUE. |
LinkedBlockingQueue |
Создаёт LinkedBlockingQueue с указанной (фиксированной) ёмкостью. |
LinkedBlockingQueue |
Создаёт LinkedBlockingQueue с ёмкостью Integer.MAX_VALUE, изначально содержащую элементы указанной коллекции, добавленные в порядке обхода итератором этой коллекции. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
clear() |
Атомарно удаляет все элементы из этой очереди. |
boolean |
contains |
Возвращает true, если эта очередь содержит указанный элемент. |
int |
drainTo |
Удаляет все доступные элементы из этой очереди и добавляет их в указанную коллекцию. |
int |
drainTo |
Удаляет из этой очереди не более указанного числа доступных элементов и добавляет их в указанную коллекцию. |
void |
forEach |
Выполняет указанное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не вызовет исключение. |
Iterator |
iterator() |
Возвращает итератор по элементам этой очереди в надлежащем порядке. |
boolean |
offer |
Вставляет указанный элемент в хвост этой очереди, если это можно сделать немедленно, не превышая её ёмкость; при успешной вставке возвращает true, а если очередь заполнена — false. |
boolean |
offer |
Вставляет указанный элемент в хвост этой очереди, при необходимости ожидая освобождения места не дольше указанного времени ожидания. |
E |
peek() |
Возвращает, не удаляя, элемент из головы этой очереди или возвращает null, если очередь пуста. |
E |
poll() |
Извлекает и удаляет элемент из головы этой очереди или возвращает null, если очередь пуста. |
E |
poll |
Извлекает и удаляет элемент из головы этой очереди, при необходимости ожидая появления элемента не дольше указанного времени ожидания. |
void |
put |
Вставляет указанный элемент в хвост этой очереди, при необходимости ожидая освобождения места. |
int |
remainingCapacity() |
Возвращает количество дополнительных элементов, которые эта очередь в идеальных условиях (при отсутствии ограничений памяти и ресурсов) может принять, не блокируя поток. |
boolean |
remove |
Удаляет из этой очереди один экземпляр указанного элемента, если он присутствует. |
boolean |
removeAll |
Удаляет из этой коллекции все элементы, которые также содержатся в указанной коллекции (необязательная операция). |
boolean |
removeIf |
Удаляет из этой коллекции все элементы, удовлетворяющие указанному предикату (необязательная операция). |
boolean |
retainAll |
Оставляет в этой коллекции только элементы, содержащиеся в указанной коллекции (необязательная операция). |
int |
size() |
Возвращает количество элементов в этой очереди. |
Spliterator |
spliterator() |
Возвращает Spliterator для обхода элементов этой очереди. |
E |
take() |
Извлекает и удаляет элемент из головы этой очереди, при необходимости ожидая появления элемента. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой очереди в надлежащем порядке. |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой очереди в надлежащем порядке; тип возвращаемого массива во время выполнения совпадает с типом указанного массива. |
Методы, объявленные в классе AbstractQueue
add, addAll, element, remove
Методы, объявленные в классе AbstractCollection
containsAll, isEmpty, toString
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе BlockingQueue
add
Методы, объявленные в интерфейсе Collection
addAll, containsAll, equals, hashCode, isEmpty, parallelStream, stream, toArray
Подробное описание конструкторов
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
peek
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 на основе массивов и API на основе коллекций.
- Указано в:
-
toArrayв интерфейсеCollection<E> - Переопределяет:
-
toArrayв классеAbstractCollection<E> - Возвращает:
- массив, содержащий все элементы этой очереди
toArray
public <T> T[] toArray(T[] a)
Если очередь помещается в указанный массив с запасом места (то есть массив содержит больше элементов, чем эта очередь), элемент массива непосредственно после конца очереди устанавливается в null.
Как и метод toArray(), этот метод служит связующим звеном между API на основе массивов и 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
clear
public void clear()
- Указано в:
-
clearв интерфейсеCollection<E> - Переопределяет:
-
clearв классеAbstractQueue<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— если указанная коллекция является этой очередью или некоторое свойство элемента этой очереди не позволяет добавить его в указанную коллекцию
iterator
public Iterator<E> iterator()
Возвращаемый итератор является слабо согласованным.
- Указано в:
-
iteratorв интерфейсеCollection<E> - Указано в:
-
iteratorв интерфейсеIterable<E> - Указано в:
-
iteratorв классеAbstractCollection<E> - Возвращает:
- итератор по элементам этой очереди в правильном порядке
spliterator
public Spliterator<E> spliterator()
Spliterator по элементам этой очереди. Возвращаемый сплитератор является слабо согласованным.
Spliterator сообщает характеристики Spliterator.CONCURRENT, Spliterator.ORDERED и Spliterator.NONNULL.
- Указано в:
-
spliteratorв интерфейсеCollection<E> - Указано в:
-
spliteratorв интерфейсеIterable<E> - Примечание по реализации:
SpliteratorреализуетtrySplit, обеспечивая ограниченный параллелизм.- Возвращает:
Spliteratorпо элементам этой очереди- Начиная с:
- 1.8
forEach
public void forEach(Consumer<? super E> action)
IterableIterable, пока не будут обработаны все элементы или действие не выбросит исключение. Если порядок итерации определен, действия выполняются в этом порядке. Исключения, выброшенные действием, передаются вызывающему коду. Поведение этого метода не определено, если действие выполняет побочные эффекты, изменяющие исходный набор элементов, за исключением случаев, когда переопределяющий класс определяет политику конкурентных изменений.
- Указано в:
-
forEachв интерфейсеIterable<E> - Параметры:
-
action— действие, выполняемое для каждого элемента - Исключения:
-
NullPointerException— если указанное действие равно null
removeIf
public boolean removeIf(Predicate<? super E> filter)
Collection- Указано в:
-
removeIfв интерфейсеCollection<E> - Параметры:
-
filter— предикат, возвращающийtrueдля удаляемых элементов - Возвращает:
-
true, если были удалены какие-либо элементы - Исключения:
-
NullPointerException— если указанный фильтр равен null
removeAll
public boolean removeAll(Collection<?> c)
AbstractCollection- Указано в:
-
removeAllв интерфейсеCollection<E> - Переопределяет:
-
removeAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые следует удалить из этой коллекции - Возвращает:
-
true, если эта коллекция изменилась в результате вызова - Исключения:
-
NullPointerException— если эта коллекция содержит один или несколько элементов null, а указанная коллекция не поддерживает элементы null (необязательно), или если указанная коллекция равна null - См. также:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Указано в:
-
retainAllв интерфейсеCollection<E> - Переопределяет:
-
retainAllв классеAbstractCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые следует оставить в этой коллекции - Возвращает:
-
true, если эта коллекция изменилась в результате вызова - Исключения:
-
NullPointerException— если эта коллекция содержит один или несколько элементов null, а указанная коллекция не допускает элементы null (необязательно), или если указанная коллекция равна null - См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/LinkedBlockingQueue.html