Интерфейс BlockingDeque<E>
- Type Parameters:
-
E- тип элементов, хранящихся в этом deque
- Все суперинтерфейсы:
-
BlockingQueue<E>,Collection<E>,Deque<E>,Iterable<E>,Queue<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 |
Вставляет указанный элемент в очередь, представленную этим деком (другими словами, в хвост этого дека), если это возможно сделать немедленно без нарушения ограничений по емкости, возвращая true при успехе и выбрасывая IllegalStateException , если в настоящее время нет места. |
void |
addFirst |
Вставляет указанный элемент в начало этого дека, если это возможно сделать немедленно без нарушения ограничений по емкости, выбрасывая IllegalStateException , если в настоящее время нет места. |
void |
addLast |
Вставляет указанный элемент в конец этого дека, если это возможно сделать немедленно без нарушения ограничений по емкости, выбрасывая IllegalStateException , если в настоящее время нет места. |
boolean |
contains |
Возвращает true , если этот дек содержит указанный элемент. |
E |
element() |
Получает, но не удаляет, голову очереди, представленной этим деком (другими словами, первый элемент этого дека). |
Iterator<E> |
iterator() |
Возвращает итератор по элементам в этом деке в правильной последовательности. |
boolean |
offer |
Вставляет указанный элемент в очередь, представленную этим деком (другими словами, в хвост этого дека), если это возможно сделать немедленно без нарушения ограничений по емкости, возвращая true при успехе и false , если в настоящее время нет места. |
boolean |
offer |
Вставляет указанный элемент в очередь, представленную этим деком (другими словами, в хвост этого дека), ожидая до указанного времени ожидания, если необходимо, для освобождения места. |
boolean |
offerFirst |
Вставляет указанный элемент в начало этого дека, если это возможно сделать немедленно без нарушения ограничений по емкости, возвращая true при успехе и false , если в настоящее время нет места. |
boolean |
offerFirst |
Вставляет указанный элемент в начало этого дека, ожидая до указанного времени ожидания, если необходимо, для освобождения места. |
boolean |
offerLast |
Вставляет указанный элемент в конец этого дека, если это возможно сделать немедленно без нарушения ограничений по емкости, возвращая true при успехе и false , если в настоящее время нет места. |
boolean |
offerLast |
Вставляет указанный элемент в конец этого дека, ожидая до указанного времени ожидания, если необходимо, для освобождения места. |
E |
peek() |
Получает, но не удаляет, голову очереди, представленной этим деком (другими словами, первый элемент этого дека), или возвращает null , если этот дек пуст. |
E |
poll() |
Получает и удаляет голову очереди, представленной этим деком (другими словами, первый элемент этого дека), или возвращает null , если этот дек пуст. |
E |
poll |
Получает и удаляет голову очереди, представленной этим деком (другими словами, первый элемент этого дека), ожидая до указанного времени ожидания, если необходимо, для освобождения места. |
E |
pollFirst |
Получает и удаляет первый элемент этого дека, ожидая до указанного времени ожидания, если необходимо, для освобождения места. |
E |
pollLast |
Получает и удаляет последний элемент этого дека, ожидая до указанного времени ожидания, если необходимо, для освобождения места. |
void |
push |
Добавляет элемент на стек, представленный этим деком (другими словами, в начало этого дека), если это возможно сделать немедленно без нарушения ограничений по емкости, выбрасывая IllegalStateException , если в настоящее время нет места. |
void |
put |
Вставляет указанный элемент в очередь, представленную этим деком (другими словами, в хвост этого дека), ожидая, если необходимо, пока место не станет доступным. |
void |
putFirst |
Вставляет указанный элемент в начало этого дека, ожидая, если необходимо, пока место не станет доступным. |
void |
putLast |
Вставляет указанный элемент в конец этого дека, ожидая, если необходимо, пока место не станет доступным. |
E |
remove() |
Получает и удаляет голову очереди, представленной этим деком (другими словами, первый элемент этого дека). |
boolean |
remove |
Удаляет первое вхождение указанного элемента из этого дека. |
boolean |
removeFirstOccurrence |
Удаляет первое вхождение указанного элемента из этого дека. |
boolean |
removeLastOccurrence |
Удаляет последнее вхождение указанного элемента из этого дека. |
int |
size() |
Возвращает количество элементов в этом деке. |
E |
take() |
Получает и удаляет голову очереди, представленной этим деком (другими словами, первый элемент этого дека), ожидая, если необходимо, пока элемент не станет доступным. |
E |
takeFirst() |
Получает и удаляет первый элемент этого дека, ожидая, если необходимо, пока элемент не станет доступным. |
E |
takeLast() |
Получает и удаляет последний элемент этого дека, ожидая, если необходимо, пока элемент не станет доступным. |
Методы, объявленные в интерфейсе 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
Подробное описание методов
addFirst
void addFirst(E e)
IllegalStateException , если в настоящее время нет места. При использовании очереди с ограниченной емкостью, обычно предпочтительнее использовать offerFirst.- Указано:
-
addFirstв интерфейсеDeque<E> - Параметры:
-
e- добавляемый элемент - Исключения:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в эту очередь -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если какие-либо свойства указанного элемента препятствуют его добавлению в эту очередь
addLast
void addLast(E e)
IllegalStateException , если в настоящее время нет места. При использовании очереди с ограниченной емкостью, обычно предпочтительнее использовать offerLast.- Указано:
-
addLastв интерфейсеDeque<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 - Возвращает:
- хвост этой очереди, или
null, если указанное время ожидания истекло, прежде чем элемент стал доступным - Исключения:
-
InterruptedException- если прервано ожидание
removeFirstOccurrence
boolean removeFirstOccurrence(Object o)
e такой, что o.equals(e) (если такой элемент существует). Возвращает true , если этот дек содержал указанный элемент (или, что эквивалентно, если этот дек изменился в результате вызова).- Specified by:
-
removeFirstOccurrenceв интерфейсеDeque<E> - Parameters:
-
o- элемент, подлежащий удалению из этого дека, если он присутствует - Returns:
-
true, если элемент был удален в результате этого вызова - Throws:
-
ClassCastException- если класс указанного элемента несовместим с этим деком (необязательно) -
NullPointerException- если указанный элемент имеет значение null (необязательно)
removeLastOccurrence
boolean removeLastOccurrence(Object o)
e такой, что o.equals(e) (если такой элемент существует). Возвращает true , если этот дек содержал указанный элемент (или, что эквивалентно, если этот дек изменился в результате вызова).- Specified by:
-
removeLastOccurrenceв интерфейсеDeque<E> - Parameters:
-
o- элемент, подлежащий удалению из этого дека, если он присутствует - Returns:
-
true, если элемент был удален в результате этого вызова - Throws:
-
ClassCastException- если класс указанного элемента несовместим с этим деком (необязательно) -
NullPointerException- если указанный элемент имеет значение null (необязательно)
add
boolean add(E e)
true при успехе и выбрасывая IllegalStateException , если в настоящее время нет места. При использовании дека с ограниченной емкостью обычно предпочтительнее использовать offer. Этот метод эквивалентен addLast.
- Specified by:
-
addв интерфейсеBlockingQueue<E> - Specified by:
-
addв интерфейсеCollection<E> - Specified by:
-
addв интерфейсеDeque<E> - Specified by:
-
addв интерфейсеQueue<E> - Parameters:
-
e- добавляемый элемент - Returns:
-
true(как указано вCollection.add(E)) - Throws:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если какое-либо свойство указанного элемента препятствует его добавлению в этот дек
offer
boolean offer(E e)
true при успехе и false , если в настоящее время нет места. При использовании дека с ограниченной емкостью этот метод обычно предпочтительнее метода add(E), который может не вставить элемент, только сбросив исключение. Этот метод эквивалентен offerLast.
- Specified by:
-
offerв интерфейсеBlockingQueue<E> - Specified by:
-
offerв интерфейсеDeque<E> - Specified by:
-
offerв интерфейсеQueue<E> - Parameters:
-
e- добавляемый элемент - Returns:
-
true, если элемент был добавлен в эту очередь, иначеfalse - Throws:
-
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если какое-либо свойство указанного элемента препятствует его добавлению в этот дек
put
void put(E e) throws InterruptedException
Этот метод эквивалентен putLast.
- Specified by:
-
putв интерфейсеBlockingQueue<E> - Parameters:
-
e- добавляемый элемент - Throws:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если какое-либо свойство указанного элемента препятствует его добавлению в этот дек
offer
boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException
Этот метод эквивалентен offerLast.
- Specified by:
-
offerв интерфейсеBlockingQueue<E> - Parameters:
-
e- добавляемый элемент -
timeout- время ожидания до отказа, в единицахunit -
unit-TimeUnitопределяющий, как интерпретировать параметрtimeout - Returns:
-
true, если элемент был добавлен в этот дек, иначеfalse - Throws:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если какое-либо свойство указанного элемента препятствует его добавлению в этот дек
remove
E remove()
poll() только тем, что он генерирует исключение, если этот дек пуст. Этот метод эквивалентен removeFirst.
- Specified by:
-
removeв интерфейсеDeque<E> - Specified by:
-
removeв интерфейсеQueue<E> - Returns:
- голова очереди, представленная этим деком
- Throws:
-
NoSuchElementException- если этот дек пуст
poll
E poll()
null , если этот дек пуст. Этот метод эквивалентен Deque.pollFirst().
- Specified by:
-
pollв интерфейсеDeque<E> - Specified by:
-
pollв интерфейсеQueue<E> - Returns:
- голова этого дека или
null, если этот дек пуст
take
E take() throws InterruptedException
Этот метод эквивалентен takeFirst.
- Specified by:
-
takeв интерфейсеBlockingQueue<E> - Returns:
- голова этого дека
- Throws:
-
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
E element()
peek только тем, что он выбрасывает исключение, если этот дек пуст. Этот метод эквивалентен getFirst.
- Specified by:
-
elementin interfaceDeque<E> - Specified by:
-
elementin interfaceQueue<E> - Returns:
- голова этого дека
- Throws:
-
NoSuchElementException- если этот дек пуст
peek
E peek()
null если этот дек пуст. Этот метод эквивалентен peekFirst.
- Specified by:
-
peekin interfaceDeque<E> - Specified by:
-
peekin interfaceQueue<E> - Returns:
- голова этого дека, или
nullесли этот дек пуст
remove
boolean remove(Object o)
e такой, что o.equals(e) (если такой элемент существует). Возвращает true если этот дек содержал указанный элемент (или, что равносильно, если этот дек изменился в результате вызова). Этот метод эквивалентен removeFirstOccurrence.
- Specified by:
-
removein interfaceBlockingQueue<E> - Specified by:
-
removein interfaceCollection<E> - Specified by:
-
removein interfaceDeque<E> - Parameters:
-
o- элемент, который нужно удалить из этого дека, если он есть - Returns:
-
trueесли этот дек изменился в результате вызова - Throws:
-
ClassCastException- если класс указанного элемента несовместим с этим деком (необязательно) -
NullPointerException- если указанный элемент равен null (необязательно)
contains
boolean contains(Object o)
true если этот дек содержит указанный элемент. Более формально, возвращает true тогда и только тогда, когда этот дек содержит по крайней мере один элемент e такой, что o.equals(e).- Specified by:
-
containsin interfaceBlockingQueue<E> - Specified by:
-
containsin interfaceCollection<E> - Specified by:
-
containsin interfaceDeque<E> - Parameters:
-
o- объект, который нужно проверить на наличие в этом деке - Returns:
-
trueесли этот дек содержит указанный элемент - Throws:
-
ClassCastException- если класс указанного элемента несовместим с этим деком (необязательно) -
NullPointerException- если указанный элемент равен null (необязательно)
size
int size()
- Specified by:
-
sizein interfaceCollection<E> - Specified by:
-
sizein interfaceDeque<E> - Returns:
- количество элементов в этом деке
iterator
Iterator<E> iterator()
- Specified by:
-
iteratorin interfaceCollection<E> - Specified by:
-
iteratorin interfaceDeque<E> - Specified by:
-
iteratorin interfaceIterable<E> - Returns:
- итератор по элементам в этом деке в правильном порядке
push
void push(E e)
IllegalStateException если нет свободной памяти. Этот метод эквивалентен addFirst.
- Specified by:
-
pushin interfaceDeque<E> - Parameters:
-
e- элемент для помещения - Throws:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент равен null -
IllegalArgumentException- если какие-либо свойства указанного элемента препятствуют его добавлению в этот дек
© 1993, 2021, 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/17/docs/api/java.base/java/util/concurrent/BlockingDeque.html