Класс 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.
- С:
- 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 |
Возвращает массив, содержащий все элементы этой очереди в правильной последовательности; тип времени выполнения возвращенного массива — тип указанного массива. |
Методы, объявленные в классе 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
Подробное описание конструкторов
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()
Queuenull если эта очередь пуста.- Определено в:
-
pollв интерфейсеQueue<E> - Возвращает:
- голова этой очереди, или
nullесли эта очередь пуста
peek
public E peek()
Queuenull если эта очередь пуста.- Определено в:
-
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)
BlockingQueuec, может привести к тому, что элементы будут находиться ни в одной, ни в другой, ни в обеих коллекциях, когда возникает соответствующая исключительная ситуация. Попытки осуществить слив очереди в неё саму приводят к 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)
BlockingQueuec, может привести к тому, что элементы будут находиться ни в одной, ни в другой, ни в обеих коллекциях, когда возникает соответствующая исключительная ситуация. Попытки осуществить слив очереди в неё саму приводят к 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)
IterableIterable до тех пор, пока все элементы не будут обработаны или действие не выбросит исключение. Действия выполняются в порядке итерации, если этот порядок указан. Исключение, выброшенное действием, передается вызывающему методу. Поведение этого метода не определено, если действие выполняет побочные эффекты, которые изменяют базовый источник элементов, если только переопределяемый класс не указал политику одновременной модификации.
- 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:
retainAll
public boolean retainAll(Collection<?> c)
AbstractCollection- Указано в:
-
retainAllв интерфейсеCollection<E> - Переопределяет:
-
retainAllв классеAbstractCollection<E> - Параметры:
-
c- набор, содержащий элементы, которые необходимо сохранить в этом наборе - Возвращает:
-
trueесли этот набор изменился в результате вызова - Выбрасывает:
-
NullPointerException- если этот набор содержит один или несколько нулевых элементов, а указанный набор не допускает нулевых элементов (дополнительное) или если указанный набор равен null - См. также:
© 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