Класс DelayQueue<E extends Delayed>
- Type Parameters:
-
E- тип элементов, хранимых в этой очереди
- Все реализованные интерфейсы:
-
Iterable<E>,Collection<E>,BlockingQueue<E>,Queue<E>
public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E>
poll вернёт null. Истечение отсрочки происходит, когда метод getDelay(TimeUnit.NANOSECONDS) элемента возвращает значение, меньшее или равное нулю. Несмотря на то, что элементы с неистекшей отсрочкой не могут быть удалены с помощью take или poll, они обрабатываются как обычные элементы. Например, метод size возвращает количество элементов, как истекших, так и неистекших. Эта очередь не допускает нулевых элементов. Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator. Итератор, предоставляемый методом iterator(), не гарантирует проход по элементам DelayQueue в определённом порядке.
Этот класс является частью фреймворка Java Collections Framework.
- Since:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DelayQueue() |
Создаёт новую DelayQueue, которая изначально пуста. |
DelayQueue |
Создаёт DelayQueue, содержащую изначально элементы заданной коллекции экземпляров Delayed. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в эту очередь с отсрочкой. |
void |
clear() |
Атомарно удаляет все элементы из этой очереди с отсрочкой. |
int |
drainTo |
Удаляет все доступные элементы из этой очереди и добавляет их в заданную коллекцию. |
int |
drainTo |
Удаляет не более заданного числа доступных элементов из этой очереди и добавляет их в заданную коллекцию. |
Iterator<E> |
iterator() |
Возвращает итератор по всем элементам (как истекшим, так и неистекшим) в этой очереди. |
boolean |
offer |
Вставляет указанный элемент в эту очередь с отсрочкой. |
boolean |
offer |
Вставляет указанный элемент в эту очередь с отсрочкой. |
E |
peek() |
Возвращает голову этой очереди без удаления, или null если очередь пуста. |
E |
poll() |
Возвращает и удаляет голову этой очереди, или null если в очереди нет элементов с истекшей отсрочкой. |
E |
poll |
Возвращает и удаляет голову этой очереди, ожидая, если необходимо, пока в очереди появится элемент с истекшей отсрочкой, или до истечения заданного времени ожидания. |
void |
put |
Вставляет указанный элемент в эту очередь с отсрочкой. |
int |
remainingCapacity() |
Всегда возвращает Integer.MAX_VALUE потому что очередь с отсрочкой не ограничена по емкости. |
boolean |
remove |
Удаляет один экземпляр указанного элемента из очереди, если он присутствует, независимо от того, истекла ли его отсрочка. |
int |
size() |
Возвращает количество элементов в этой коллекции. |
E |
take() |
Возвращает и удаляет голову этой очереди, ожидая, если необходимо, пока в очереди появится элемент с истекшей отсрочкой. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой очереди. |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой очереди; тип возвращаемого массива совпадает со специфицированным массивом. |
Методы, унаследованные от класса java.util.AbstractQueue
addAll, element, remove
Методы, унаследованные от класса java.util.AbstractCollection
contains, containsAll, isEmpty, removeAll, retainAll, toString
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, унаследованные от интерфейса java.util.concurrent.BlockingQueue
contains
Методы, унаследованные от интерфейса java.util.Collection
addAll, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream, toArray
Подробное описание конструкторов
DelayQueue
public DelayQueue()
DelayQueue. DelayQueue
public DelayQueue(Collection<? extends E> c)
DelayQueue, содержащий элементы заданной коллекции экземпляров Delayed.- Параметры:
-
c- коллекция элементов, которые должны содержаться изначально - Исключения:
-
NullPointerException- если заданная коллекция или любой из её элементов равны null
Подробное описание методов
add
public boolean add(E e)
- Определено в:
-
addв интерфейсеBlockingQueue<E extends Delayed> - Определено в:
-
addв интерфейсеCollection<E extends Delayed> - Определено в:
-
addв интерфейсеQueue<E extends Delayed> - Переопределяет:
-
addв классеAbstractQueue<E extends Delayed> - Параметры:
-
e- элемент для добавления - Возвращает:
-
true(как указано вCollection.add(E)) - Исключения:
-
NullPointerException- если указанный элемент равен null
offer
public boolean offer(E e)
- Определено в:
-
offerв интерфейсеBlockingQueue<E extends Delayed> - Определено в:
-
offerв интерфейсеQueue<E extends Delayed> - Параметры:
-
e- элемент для добавления - Возвращает:
true- Исключения:
-
NullPointerException- если указанный элемент равен null
put
public void put(E e)
- Определено в:
-
putв интерфейсеBlockingQueue<E extends Delayed> - Параметры:
-
e- элемент для добавления - Исключения:
-
NullPointerException- если указанный элемент равен null
offer
public boolean offer(E e, long timeout, TimeUnit unit)
- Определено в:
-
offerв интерфейсеBlockingQueue<E extends Delayed> - Параметры:
-
e- элемент для добавления -
timeout- Этот параметр игнорируется, так как метод никогда не блокируется -
unit- Этот параметр игнорируется, так как метод никогда не блокируется - Возвращает:
true- Исключения:
-
NullPointerException- если указанный элемент равен null
poll
public E poll()
null если в очереди нет элементов с истекшим сроком ожидания.- Определено в:
-
pollв интерфейсеQueue<E extends Delayed> - Возвращает:
- голову очереди или
nullесли в очереди нет элементов с истекшим сроком ожидания
take
public E take() throws InterruptedException
- Определено в:
-
takeв интерфейсеBlockingQueue<E extends Delayed> - Возвращает:
- голову очереди
- Исключения:
-
InterruptedException- если поток прерван во время ожидания
poll
public E poll(long timeout, TimeUnit unit) throws InterruptedException
- Определено в:
-
pollв интерфейсеBlockingQueue<E extends Delayed> - Параметры:
-
timeout- сколько времени ждать, прежде чем отказаться, в единицахunit -
unit-TimeUnitопределяющий способ интерпретации параметраtimeout - Возвращает:
- голову очереди, или
nullесли указанное время ожидания истекло, прежде чем появился элемент с истекшим сроком ожидания - Исключения:
-
InterruptedException- если поток прерван во время ожидания
peek
public E peek()
null если очередь пуста. В отличие от poll, если в очереди нет элементов с истекшим сроком ожидания, этот метод возвращает элемент, который истечёт следующим, если такой существует.- Определено в:
-
peekв интерфейсеQueue<E extends Delayed> - Возвращает:
- голову очереди или
nullесли очередь пуста
size
public int size()
CollectionInteger.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.- Определено в:
-
sizeв интерфейсеCollection<E extends Delayed> - Возвращает:
- количество элементов в этой коллекции
drainTo
public int drainTo(Collection<? super E> c)
BlockingQueuec, может привести к тому, что элементы будут находиться ни в одной, ни в той, ни в другой, ни в обеих коллекциях, когда будет брошено связанное исключение. Попытки слить очередь в неё же приводят к IllegalArgumentException. Кроме того, поведение этой операции не определено, если заданная коллекция изменяется во время выполнения операции.- Определено в:
-
drainToв интерфейсеBlockingQueue<E extends Delayed> - Параметры:
-
c- коллекция, в которую будут перенесены элементы - Возвращает:
- количество перенесённых элементов
- Исключения:
-
UnsupportedOperationException- если добавление элементов не поддерживается заданной коллекцией -
ClassCastException- если класс элемента этой очереди не позволяет добавить его в заданную коллекцию -
NullPointerException- если заданная коллекция равна null -
IllegalArgumentException- если заданная коллекция является этой очередью, или некоторые свойства элемента этой очереди не позволяют добавить его в заданную коллекцию
drainTo
public int drainTo(Collection<? super E> c, int maxElements)
BlockingQueuec, может привести к тому, что элементы будут находиться ни в одной, ни в той, ни в другой, ни в обеих коллекциях, когда будет брошено связанное исключение. Попытки слить очередь в неё же приводят к IllegalArgumentException. Кроме того, поведение этой операции не определено, если заданная коллекция изменяется во время выполнения операции.- Определено в:
-
drainToв интерфейсеBlockingQueue<E extends Delayed> - Параметры:
-
c- коллекция, в которую будут перенесены элементы -
maxElements- максимальное количество элементов для переноса - Возвращает:
- количество перенесённых элементов
- Исключения:
-
UnsupportedOperationException- если добавление элементов не поддерживается заданной коллекцией -
ClassCastException- если класс элемента этой очереди не позволяет добавить его в заданную коллекцию -
NullPointerException- если заданная коллекция равна null -
IllegalArgumentException- если заданная коллекция является этой очередью, или некоторые свойства элемента этой очереди не позволяют добавить его в заданную коллекцию
clear
public void clear()
- Определено в:
-
clearв интерфейсеCollection<E extends Delayed> - Переопределяет:
-
clearв классеAbstractQueue<E extends Delayed>
remainingCapacity
public int remainingCapacity()
Integer.MAX_VALUE , так как очередь с отложенным выполнением не ограничена по размеру.- Определено в:
-
remainingCapacityв интерфейсеBlockingQueue<E extends Delayed> - Возвращает:
Integer.MAX_VALUE
toArray
public Object[] toArray()
Возвращаемый массив будет «безопасным» в том смысле, что к нему не сохраняются ссылки из этой очереди. (Иными словами, этот метод должен выделить новый массив). Таким образом, вызывающий метод свободен изменять возвращаемый массив.
Этот метод служит мостом между основанными на массивах и основанными на коллекциях API.
- Указано в:
-
toArrayв интерфейсеCollection<E extends Delayed> - Переопределяет:
-
toArrayв классеAbstractCollection<E extends Delayed> - Возвращает:
- массив, содержащий все элементы в этой очереди
toArray
public <T> T[] toArray(T[] a)
Если эта очередь помещается в указанный массив с избыточным пространством (т. е. массив имеет больше элементов, чем эта очередь), элемент в массиве сразу после конца очереди устанавливается в значение null.
Как и метод toArray(), этот метод служит мостом между основанными на массивах и основанными на коллекциях API. Кроме того, этот метод позволяет точно контролировать тип выполнения массива вывода и может в определенных обстоятельствах использоваться для экономии расходов на выделение памяти.
Следующий код может быть использован для выгрузки очереди ожидания в недавно выделенный массив типа Delayed:
Delayed[] a = q.toArray(new Delayed[0]); Обратите внимание, что toArray(new Object[0]) выполняет идентичную функцию toArray().- Указано в:
-
toArrayв интерфейсеCollection<E extends Delayed> - Переопределяет:
-
toArrayв классеAbstractCollection<E extends Delayed> - Параметры типа:
-
T— тип компонентов массива, содержащего коллекцию - Параметры:
-
a— массив, в который должны быть помещены элементы очереди, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа выполнения - Возвращает:
- массив, содержащий все элементы в этой очереди
- Исключения:
-
ArrayStoreException— если тип выполнения указанного массива не является супертипом типа выполнения каждого элемента в этой очереди -
NullPointerException— если указанный массив равен null
remove
public boolean remove(Object o)
- Указано в:
-
removeв интерфейсеBlockingQueue<E extends Delayed> - Указано в:
-
removeв интерфейсеCollection<E extends Delayed> - Переопределяет:
-
removeв классеAbstractCollection<E extends Delayed> - Параметры:
-
o— элемент, подлежащий удалению из этой коллекции, если он присутствует - Возвращает:
-
trueесли элемент был удалён в результате этого вызова
iterator
public Iterator<E> iterator()
Возвращаемый итератор является слабо согласованным.
- Указано в:
-
iteratorв интерфейсеCollection<E extends Delayed> - Указано в:
-
iteratorв интерфейсеIterable<E extends Delayed> - Указано в:
-
iteratorв классеAbstractCollection<E extends Delayed> - Возвращает:
- итератор по элементам в этой очереди
© 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/DelayQueue.html