Интерфейс 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, дополнительно поддерживающая блокирующие операции, которые ожидают, пока очередь не станет непустой при извлечении элемента, и ожидают освобождения места в очереди при хранении элемента. 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 happen-before последующие действия по доступу или удалению этого элемента из BlockingDeque в другом потоке.
Этот интерфейс является частью Java Collections Framework.
- Since:
- 1.6
Краткое описание методов
| Modifier and Type | Method | Description |
|---|---|---|
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.- Specified by:
-
addFirstв интерфейсеDeque<E> - Specified by:
-
addFirstв интерфейсеSequencedCollection<E> - Parameters:
-
e- добавляемый элемент - Throws:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента предотвращает его добавление в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в этот дек
addLast
void addLast(E e)
IllegalStateException , если в настоящее время нет места. При использовании очереди с двойным концом с ограниченной емкостью обычно предпочтительнее использовать offerLast.- Specified by:
-
addLastв интерфейсеDeque<E> - Specified by:
-
addLastв интерфейсеSequencedCollection<E> - Parameters:
-
e- добавляемый элемент - Throws:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента предотвращает его добавление в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в этот дек
offerFirst
boolean offerFirst(E e)
true при успехе и false , если в настоящее время нет места. При использовании очереди с двойным концом с ограниченной емкостью этот метод, как правило, предпочтительнее метода addFirst, который может не вставить элемент только путем выброса исключения.- Specified by:
-
offerFirstв интерфейсеDeque<E> - Parameters:
-
e- добавляемый элемент - Returns:
-
true, если элемент был добавлен в этот дек, иначеfalse - Throws:
-
ClassCastException- если класс указанного элемента предотвращает его добавление в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в этот дек
offerLast
boolean offerLast(E e)
true при успехе и false , если в настоящее время нет места. При использовании очереди с двойным концом с ограниченной емкостью этот метод, как правило, предпочтительнее метода addLast, который может не вставить элемент только путем выброса исключения.- Specified by:
-
offerLastв интерфейсеDeque<E> - Parameters:
-
e- добавляемый элемент - Returns:
-
true, если элемент был добавлен в этот дек, иначеfalse - Throws:
-
ClassCastException- если класс указанного элемента предотвращает его добавление в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в этот дек
putFirst
void putFirst(E e) throws InterruptedException
- Parameters:
-
e- добавляемый элемент - Throws:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента предотвращает его добавление в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в этот дек
putLast
void putLast(E e) throws InterruptedException
- Parameters:
-
e- добавляемый элемент - Throws:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента предотвращает его добавление в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в этот дек
offerFirst
boolean offerFirst(E e, long timeout, TimeUnit unit) throws InterruptedException
- Parameters:
-
e- добавляемый элемент -
timeout- время ожидания, прежде чем отказаться, в единицахunit -
unit-TimeUnit, определяющий, как интерпретировать параметрtimeout - Returns:
-
true, если успешно, илиfalse, если указанное время ожидания истекает, прежде чем освободится место - Throws:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента предотвращает его добавление в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в этот дек
offerLast
boolean offerLast(E e, long timeout, TimeUnit unit) throws InterruptedException
- Parameters:
-
e- добавляемый элемент -
timeout- время ожидания, прежде чем отказаться, в единицахunit -
unit-TimeUnit, определяющий, как интерпретировать параметрtimeout - Returns:
-
true, если успешно, илиfalse, если указанное время ожидания истекает, прежде чем освободится место - Throws:
-
InterruptedException- если прервано ожидание -
ClassCastException- если класс указанного элемента предотвращает его добавление в этот дек -
NullPointerException- если указанный элемент имеет значение null -
IllegalArgumentException- если некоторые свойства указанного элемента препятствуют его добавлению в этот дек
takeFirst
E takeFirst() throws InterruptedException
- Returns:
- голова этого очереди с двойным концом
- Throws:
-
InterruptedException- если прервано ожидание
takeLast
E takeLast() throws InterruptedException
- Returns:
- хвост этого очереди с двойным концом
- Throws:
-
InterruptedException- если прервано ожидание
pollFirst
E pollFirst(long timeout, TimeUnit unit) throws InterruptedException
- Parameters:
-
timeout- время ожидания, прежде чем отказаться, в единицахunit -
unit-TimeUnit, определяющий, как интерпретировать параметрtimeout - Returns:
- голова этого очереди с двойным концом, или
null, если указанное время ожидания истекает, прежде чем элемент станет доступным - Throws:
-
InterruptedException- если прервано ожидание
pollLast
E pollLast(long timeout, TimeUnit unit) throws InterruptedException
- Parameters:
-
timeout- время ожидания, прежде чем отказаться, в единицахunit -
unit-TimeUnit, определяющий, как интерпретировать параметрtimeout - Returns:
- хвост этого очереди с двойным концом, или
null, если указанное время ожидания истекает, прежде чем элемент станет доступным - Throws:
-
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- aTimeUnitопределяющий, как интерпретировать параметр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- aTimeUnitопределяющий, как интерпретировать параметрtimeout - Returns:
- голова этой очереди, или
null, если указанное время ожидания истекло, прежде чем элемент стал доступным - Throws:
-
InterruptedException- если прервано ожидание
element
E element()
peek только тем, что он генерирует исключение, если этот дек пуст. Этот метод эквивалентен getFirst.
- Specified by:
-
elementв интерфейсеDeque<E> - Specified by:
-
elementв интерфейсеQueue<E> - Returns:
- голова этого дека
- Throws:
-
NoSuchElementException- если этот дек пуст
peek
E peek()
null если этот дек пуст. Этот метод эквивалентен peekFirst.
- Specified by:
-
peekв интерфейсеDeque<E> - Specified by:
-
peekв интерфейсеQueue<E> - Returns:
- голова этого дека или
nullесли этот дек пуст
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
int size()
- Specified by:
-
sizeв интерфейсеCollection<E> - Specified by:
-
sizeв интерфейсеDeque<E> - Returns:
- количество элементов в этом деке
iterator
Iterator<E> iterator()
- Specified by:
-
iteratorв интерфейсеCollection<E> - Specified by:
-
iteratorв интерфейсеDeque<E> - Specified by:
-
iteratorв интерфейсеIterable<E> - Returns:
- итератор по элементам в этом деке в правильной последовательности
push
void push(E e)
IllegalStateException если свободно места нет. Этот метод эквивалентен addFirst.
- Specified by:
-
pushв интерфейсеDeque<E> - Parameters:
-
e- элемент для помещения на стек - Throws:
-
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений по емкости -
ClassCastException- если класс указанного элемента препятствует его добавлению в этот дек -
NullPointerException- если указанный элемент равен null -
IllegalArgumentException- если какое-либо свойство указанного элемента препятствует его добавлению в этот дек
© 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/BlockingDeque.html