Интерфейс BlockingDeque<E>
- Type Parameters:
E- тип элементов, хранящихся в этом deque
- Все суперинтерфейсы:
-
BlockingQueue<E>,Collection<E>,Deque<E>,Iterable<E>,Queue<E>,SequencedCollection<E>
- Все известные реализующие классы:
LinkedBlockingDeque
public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E>
Deque, который дополнительно поддерживает блокирующие операции, ожидающие, пока deque не станет непустым при получении элемента, и ожидает освобождения места в deque при хранении элемента. BlockingDeque методы представлены в четырёх формах с различными способами обработки операций, которые не могут быть выполнены немедленно, но могут быть выполнены в какой-то момент в будущем: одна выбрасывает исключение, вторая возвращает специальное значение (либо null, либо false, в зависимости от операции), третья блокирует текущую нить неопределённо долго, пока операция не завершится успешно, а четвёртая блокируется только на заданный максимальный срок, прежде чем отказаться. Эти методы обобщены в следующей таблице:
| Первый элемент (голова) | ||||
|---|---|---|---|---|
| Выбрасывает исключение | Специальное значение | Блокирует | Истекает время | |
| Вставить | addFirst(e) | offerFirst(e) | putFirst(e) | offerFirst(e, time, unit) |
| Удалить | removeFirst() | pollFirst() | takeFirst() | pollFirst(time, unit) |
| Просмотреть | getFirst() | peekFirst() | не применимо | не применимо |
| Последний элемент (хвост) | ||||
| Выбрасывает исключение | Специальное значение | Блокирует | Истекает время | |
| Вставить | addLast(e) | offerLast(e) | putLast(e) | offerLast(e, time, unit) |
| Удалить | removeLast() | pollLast() | takeLast() | pollLast(time, unit) |
| Просмотреть | getLast() | peekLast() | не применимо | не применимо |
Как и любой интерфейс BlockingQueue, интерфейс BlockingDeque является потокобезопасным, не допускает нулевых элементов и может (или не может) быть ограничен по размеру.
Реализация BlockingDeque может использоваться напрямую в качестве FIFO BlockingQueue. Методы, унаследованные от интерфейса BlockingQueue, точно соответствуют методам BlockingDeque, как показано в следующей таблице:
BlockingQueue Метод | Эквивалентный BlockingDeque Метод | |
|---|---|---|
| Вставка | add(e) | addLast(e) |
offer(e) | offerLast(e) | |
put(e) | putLast(e) | |
offer(e, time, unit) | offerLast(e, time, unit) | |
| Удаление | remove() | removeFirst() |
poll() | pollFirst() | |
take() | takeFirst() | |
poll(time, unit) | pollFirst(time, unit) | |
| Просмотр | element() | getFirst() |
peek() | peekFirst() |
Эффекты согласованности памяти: Как и в других коллекциях, действия в потоке перед размещением объекта в BlockingDeque предшествуют действиям, следующим за доступом или удалением этого элемента из BlockingDeque в другом потоке.
Этот интерфейс является частью Java Collections Framework.
- Since:
- 1.6
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в очередь, представленную этим deque (другими словами, в конец этого deque), если это возможно сделать немедленно без нарушения ограничений на емкость, возвращая true при успехе и вызывая исключение IllegalStateException, если в настоящее время места нет. |
void |
addFirst |
Вставляет указанный элемент в начало этого deque, если это возможно сделать немедленно без нарушения ограничений на емкость, вызывая исключение IllegalStateException, если в настоящее время места нет. |
void |
addLast |
Вставляет указанный элемент в конец этого deque, если это возможно сделать немедленно без нарушения ограничений на емкость, вызывая исключение IllegalStateException, если в настоящее время места нет. |
boolean |
contains |
Возвращает true, если этот deque содержит указанный элемент. |
E |
element() |
Извлекает, но не удаляет, голову очереди, представленной этим deque (другими словами, первый элемент этого deque). |
Iterator |
iterator() |
Возвращает итератор по элементам этого deque в правильном порядке. |
boolean |
offer |
Вставляет указанный элемент в очередь, представленную этим deque (другими словами, в конец этого deque), если это возможно сделать немедленно без нарушения ограничений на емкость, возвращая true при успехе и false, если в настоящее время места нет. |
boolean |
offer |
Вставляет указанный элемент в очередь, представленную этим deque (другими словами, в конец этого deque), ожидая до указанного времени ожидания, если необходимо, чтобы освободилось место. |
boolean |
offerFirst |
Вставляет указанный элемент в начало этого deque, если это возможно сделать немедленно без нарушения ограничений на емкость, возвращая true при успехе и false, если в настоящее время места нет. |
boolean |
offerFirst |
Вставляет указанный элемент в начало этого deque, ожидая до указанного времени ожидания, если необходимо, чтобы освободилось место. |
boolean |
offerLast |
Вставляет указанный элемент в конец этого deque, если это возможно сделать немедленно без нарушения ограничений на емкость, возвращая true при успехе и false, если в настоящее время места нет. |
boolean |
offerLast |
Вставляет указанный элемент в конец этого deque, ожидая до указанного времени ожидания, если необходимо, чтобы освободилось место. |
E |
peek() |
Извлекает, но не удаляет, голову очереди, представленной этим deque (другими словами, первый элемент этого deque), или возвращает null, если этот deque пуст. |
E |
poll() |
Извлекает и удаляет голову очереди, представленной этим deque (другими словами, первый элемент этого deque), или возвращает null, если этот deque пуст. |
E |
poll |
Извлекает и удаляет голову очереди, представленной этим deque (другими словами, первый элемент этого deque), ожидая до указанного времени ожидания, если необходимо, чтобы элемент стал доступным. |
E |
pollFirst |
Извлекает и удаляет первый элемент этого deque, ожидая до указанного времени ожидания, если необходимо, чтобы элемент стал доступным. |
E |
pollLast |
Извлекает и удаляет последний элемент этого deque, ожидая до указанного времени ожидания, если необходимо, чтобы элемент стал доступным. |
void |
push |
Помещает элемент в стек, представленный этим deque (другими словами, в начало этого deque), если это возможно сделать немедленно без нарушения ограничений на емкость, вызывая исключение IllegalStateException, если в настоящее время места нет. |
void |
put |
Вставляет указанный элемент в очередь, представленную этим deque (другими словами, в конец этого deque), ожидая, если необходимо, чтобы освободилось место. |
void |
putFirst |
Вставляет указанный элемент в начало этого deque, ожидая, если необходимо, чтобы освободилось место. |
void |
putLast |
Вставляет указанный элемент в конец этого deque, ожидая, если необходимо, чтобы освободилось место. |
E |
remove() |
Извлекает и удаляет голову очереди, представленной этим deque (другими словами, первый элемент этого deque). |
boolean |
remove |
Удаляет первое вхождение указанного элемента из этого deque. |
boolean |
removeFirstOccurrence |
Удаляет первое вхождение указанного элемента из этого deque. |
boolean |
removeLastOccurrence |
Удаляет последнее вхождение указанного элемента из этого deque. |
int |
size() |
Возвращает количество элементов в этом deque. |
E |
take() |
Извлекает и удаляет голову очереди, представленной этим deque (другими словами, первый элемент этого deque), ожидая, если необходимо, пока элемент станет доступным. |
E |
takeFirst() |
Извлекает и удаляет первый элемент этого deque, ожидая, если необходимо, пока элемент станет доступным. |
E |
takeLast() |
Извлекает и удаляет последний элемент этого deque, ожидая, если необходимо, пока элемент станет доступным. |
Методы, объявленные в интерфейсе java.util.concurrent.BlockingQueue
drainTo, drainTo, remainingCapacity
Методы, объявленные в интерфейсе java.util.Collection
clear, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream, toArray, toArray, toArray
Методы, объявленные в интерфейсе java.util.Deque
addAll, descendingIterator, getFirst, getLast, peekFirst, peekLast, pollFirst, pollLast, pop, removeFirst, removeLast, reversed
Подробное описание методов
addFirst
void addFirst(E e)
IllegalStateException, если места в настоящее время нет. При использовании очереди с ограниченной емкостью, обычно предпочтительнее использовать offerFirst.- Определено в:
-
addFirstв интерфейсеDeque<E> - Определено в:
-
addFirstв интерфейсеSequencedCollection<E> - Параметры:
-
e- элемент для добавления - Исключения:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в эту очередь -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь
addLast
void addLast(E e)
IllegalStateException, если места в настоящее время нет. При использовании очереди с ограниченной емкостью, обычно предпочтительнее использовать offerLast.- Определено в:
-
addLastв интерфейсеDeque<E> - Определено в:
-
addLastв интерфейсеSequencedCollection<E> - Параметры:
-
e- элемент для добавления - Исключения:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в эту очередь -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь
offerFirst
boolean offerFirst(E e)
true при успехе и false, если места в настоящее время нет. При использовании очереди с ограниченной емкостью, этот метод обычно предпочтительнее метода addFirst, который может не вставить элемент только путем выброса исключения.- Определено в:
-
offerFirstв интерфейсеDeque<E> - Параметры:
-
e- элемент для добавления - Возвращает:
-
true, если элемент был добавлен в эту очередь, иначеfalse - Исключения:
-
ClassCastException- если класс указанного элемента препятствует его добавлению в эту очередь -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь
offerLast
boolean offerLast(E e)
true при успехе и false, если места в настоящее время нет. При использовании очереди с ограниченной емкостью, этот метод обычно предпочтительнее метода addLast, который может не вставить элемент только путем выброса исключения.- Определено в:
-
offerLastв интерфейсеDeque<E> - Параметры:
-
e- элемент для добавления - Возвращает:
-
true, если элемент был добавлен в эту очередь, иначеfalse - Исключения:
-
ClassCastException- если класс указанного элемента препятствует его добавлению в эту очередь -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь
putFirst
void putFirst(E e) throws InterruptedException
- Параметры:
-
e- элемент для добавления - Исключения:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента препятствует его добавлению в эту очередь -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь
putLast
void putLast(E e) throws InterruptedException
- Параметры:
-
e- элемент для добавления - Исключения:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента препятствует его добавлению в эту очередь -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь
offerFirst
boolean offerFirst(E e, long timeout, TimeUnit unit) throws InterruptedException
- Параметры:
-
e- элемент для добавления -
timeout- время ожидания, прежде чем отказаться, в единицахunit -
unit- объектTimeUnit, определяющий интерпретацию параметраtimeout - Возвращает:
-
trueпри успехе илиfalse, если указанное время ожидания истекло, прежде чем освободится место - Исключения:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента препятствует его добавлению в эту очередь -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь
offerLast
boolean offerLast(E e, long timeout, TimeUnit unit) throws InterruptedException
- Параметры:
-
e- элемент для добавления -
timeout- время ожидания, прежде чем отказаться, в единицахunit -
unit- объектTimeUnit, определяющий интерпретацию параметраtimeout - Возвращает:
-
trueпри успехе илиfalse, если указанное время ожидания истекло, прежде чем освободится место - Исключения:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента препятствует его добавлению в эту очередь -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в эту очередь
takeFirst
E takeFirst() throws InterruptedException
- Возвращает:
- голова этой очереди
- Исключения:
-
InterruptedException- если прервано ожидание
takeLast
E takeLast() throws InterruptedException
- Возвращает:
- хвост этой очереди
- Исключения:
-
InterruptedException- если прервано ожидание
pollFirst
E pollFirst(long timeout, TimeUnit unit) throws InterruptedException
- Параметры:
-
timeout- время ожидания, прежде чем отказаться, в единицахunit -
unit- объектTimeUnit, определяющий интерпретацию параметраtimeout - Возвращает:
- голова этой очереди или
null, если указанное время ожидания истекло, прежде чем элемент стал доступным - Исключения:
-
InterruptedException- если прервано ожидание
pollLast
E pollLast(long timeout, TimeUnit unit) throws InterruptedException
- Параметры:
-
timeout- сколько времени ожидать, прежде чем отказаться, в единицахunit -
unit-TimeUnit, определяющий, как интерпретировать параметрtimeout - Возвращает:
- хвост этого deque или
null, если указанное время ожидания истекает, прежде чем элемент становится доступным - Исключения:
-
InterruptedException- если прервано ожидание
removeFirstOccurrence
boolean removeFirstOccurrence(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если этот deque содержал указанный элемент (или, эквивалентно, если этот deque изменился в результате вызова).- Унаследовано от:
-
removeFirstOccurrenceв интерфейсеDeque<E> - Параметры:
-
o- элемент, подлежащий удалению из этого deque, если он присутствует - Возвращает:
-
true, если элемент был удален в результате этого вызова - Исключения:
-
ClassCastException- если класс указанного элемента несовместим с этим deque (необязательно) -
NullPointerException- если указанный элемент равен null (необязательно)
removeLastOccurrence
boolean removeLastOccurrence(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если этот deque содержал указанный элемент (или, эквивалентно, если этот deque изменился в результате вызова).- Унаследовано от:
-
removeLastOccurrenceв интерфейсеDeque<E> - Параметры:
-
o- элемент, подлежащий удалению из этого deque, если он присутствует - Возвращает:
-
true, если элемент был удален в результате этого вызова - Исключения:
-
ClassCastException- если класс указанного элемента несовместим с этим deque (необязательно) -
NullPointerException- если указанный элемент равен null (необязательно)
add
boolean add(E e)
true при успехе и выбрасывает IllegalStateException, если в настоящее время нет места. При использовании deque с ограниченной емкостью обычно предпочтительнее использовать offer. Этот метод эквивалентен addLast.
- Унаследовано от:
-
addв интерфейсеBlockingQueue<E> - Унаследовано от:
-
addв интерфейсеCollection<E> - Унаследовано от:
-
addв интерфейсеDeque<E> - Унаследовано от:
-
addв интерфейсеQueue<E> - Параметры:
-
e- добавляемый элемент - Возвращает:
-
true(как указано вCollection.add(E)) - Исключения:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот deque -
NullPointerException- если указанный элемент равен null -
IllegalArgumentException- если какое-либо свойство указанного элемента препятствует его добавлению в этот deque
offer
boolean offer(E e)
true при успехе и false, если в настоящее время нет места. При использовании deque с ограниченной емкостью этот метод обычно предпочтительнее метода add(E), который может не вставить элемент, только сбросив исключение. Этот метод эквивалентен offerLast.
- Унаследовано от:
-
offerв интерфейсеBlockingQueue<E> - Унаследовано от:
-
offerв интерфейсеDeque<E> - Унаследовано от:
-
offerв интерфейсеQueue<E> - Параметры:
-
e- добавляемый элемент - Возвращает:
-
true, если элемент был добавлен в эту очередь, иначеfalse - Исключения:
-
ClassCastException- если класс указанного элемента препятствует его добавлению в этот deque -
NullPointerException- если указанный элемент равен null -
IllegalArgumentException- если какое-либо свойство указанного элемента препятствует его добавлению в этот deque
put
void put(E e) throws InterruptedException
Этот метод эквивалентен putLast.
- Унаследовано от:
-
putв интерфейсеBlockingQueue<E> - Параметры:
-
e- добавляемый элемент - Исключения:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот deque -
NullPointerException- если указанный элемент равен null -
IllegalArgumentException- если какое-либо свойство указанного элемента препятствует его добавлению в этот deque
offer
boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
Этот метод эквивалентен offerLast.
- Унаследовано от:
-
offerв интерфейсеBlockingQueue<E> - Параметры:
-
e- добавляемый элемент -
timeout- сколько времени ожидать, прежде чем отказаться, в единицахunit -
unit-TimeUnit, определяющий, как интерпретировать параметрtimeout - Возвращает:
-
true, если элемент был добавлен в этот deque, иначеfalse - Исключения:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот deque -
NullPointerException- если указанный элемент равен null -
IllegalArgumentException- если какое-либо свойство указанного элемента препятствует его добавлению в этот deque
remove
E remove()
poll() только тем, что он выбрасывает исключение, если этот deque пуст. Этот метод эквивалентен removeFirst.
poll
E poll()
null, если этот deque пуст. Этот метод эквивалентен Deque.pollFirst().
take
E take() throws InterruptedException
Этот метод эквивалентен takeFirst.
- Унаследовано от:
-
takeв интерфейсеBlockingQueue<E> - Возвращает:
- голова этого deque
- Исключения:
-
InterruptedException- если прервано ожидание
poll
E poll(long timeout, TimeUnit unit) throws InterruptedException
Этот метод эквивалентен методу pollFirst.
- Specified by:
-
pollв интерфейсеBlockingQueue<E> - Parameters:
-
timeout- время ожидания, прежде чем прекратить попытки, в единицахunit -
unit-TimeUnit, определяющая, как интерпретировать параметрtimeout - Returns:
- голова этого дека, или
null, если указанное время ожидания истекло, прежде чем элемент стал доступным - Throws:
-
InterruptedException- если произошла прерывание ожидания
element
peek
E peek()
null, если этот дек пуст. Этот метод эквивалентен методу peekFirst.
remove
boolean remove(Object o)
e, такой что o.equals(e) (если такой элемент существует). Возвращает true, если этот дек содержал указанный элемент (или, что эквивалентно, если этот дек изменился в результате вызова). Этот метод эквивалентен методу removeFirstOccurrence.
- Specified by:
-
removeв интерфейсеBlockingQueue<E> - Specified by:
-
removeв интерфейсеCollection<E> - Specified by:
-
removeв интерфейсеDeque<E> - Parameters:
-
o- элемент, который нужно удалить из этого дека, если он присутствует - Returns:
-
true, если этот дек изменился в результате вызова - Throws:
-
ClassCastException- если класс указанного элемента несовместим с этим деком (необязательно) -
NullPointerException- если указанный элемент равен null (необязательно)
contains
boolean contains(Object o)
true, если этот дек содержит указанный элемент. Более формально, возвращает true тогда и только тогда, когда этот дек содержит по крайней мере один элемент e, такой что o.equals(e).- Specified by:
-
containsв интерфейсеBlockingQueue<E> - Specified by:
-
containsв интерфейсеCollection<E> - Specified by:
-
containsв интерфейсеDeque<E> - Parameters:
-
o- объект, который нужно проверить на наличие в этом деке - Returns:
-
true, если этот дек содержит указанный элемент - Throws:
-
ClassCastException- если класс указанного элемента несовместим с этим деком (необязательно) -
NullPointerException- если указанный элемент равен null (необязательно)
size
iterator
Iterator<E> iterator()
push
void push(E e)
IllegalStateException, если в настоящее время нет места. Этот метод эквивалентен методу addFirst.
- Specified by:
-
pushв интерфейсеDeque<E> - Parameters:
-
e- элемент для помещения в стек - Throws:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента не позволяет добавить его в этот дек -
NullPointerException- если указанный элемент равен null -
IllegalArgumentException- если какое-либо свойство указанного элемента не позволяет добавить его в этот дек
© 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/BlockingDeque.html