Класс DelayQueue<E extends Delayed>
- Параметры типа:
E— тип элементов, хранящихся в этой очереди
- Все реализуемые интерфейсы:
Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E>
Delayed, в которой элемент обычно становится доступным для удаления после истечения его задержки.
Хотя этот класс реализует интерфейс BlockingQueue, он намеренно нарушает общий контракт BlockingQueue: следующие методы не учитывают наличие неистёкших элементов и удаляют только истёкшую голову:
Все остальные методы работают как с истёкшими, так и с неистёкшими элементами. Например, метод size() возвращает количество всех элементов. Метод peek() может вернуть (ненулевую) голову, даже если метод take() будет блокироваться в ожидании истечения срока действия этого элемента.
В этой очереди не допускаются элементы со значением null.
Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator. Итератор, предоставляемый методом iterator(), не гарантирует обход элементов DelayQueue в каком-либо определённом порядке.
Этот класс является частью Java Collections Framework.
- Начиная с версии:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
DelayQueue() |
Создаёт новую DelayQueue, изначально пустую. |
DelayQueue |
Создаёт DelayQueue, изначально содержащую элементы указанной коллекции экземпляров Delayed. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Вставляет указанный элемент в эту очередь задержки. |
void |
clear() |
Атомарно удаляет все элементы из этой очереди задержки. |
int |
drainTo |
Удаляет все доступные элементы из этой очереди и добавляет их в указанную коллекцию. |
int |
drainTo |
Удаляет из этой очереди не более указанного количества доступных элементов и добавляет их в указанную коллекцию. |
Iterator |
iterator() |
Возвращает итератор по всем элементам этой очереди (как истёкшим, так и неистёкшим). |
boolean |
offer |
Вставляет указанный элемент в эту очередь задержки. |
boolean |
offer |
Вставляет указанный элемент в эту очередь задержки. |
E |
peek() |
Извлекает, но не удаляет голову этой очереди или возвращает null, если очередь пуста. |
E |
poll() |
Извлекает и удаляет истёкшую голову этой очереди или возвращает null, если в очереди нет истёкших элементов. |
E |
poll |
Извлекает и удаляет истёкшую голову этой очереди, при необходимости ожидая появления в ней истёкшего элемента или истечения указанного времени ожидания. |
void |
put |
Вставляет указанный элемент в эту очередь задержки. |
int |
remainingCapacity() |
Всегда возвращает Integer.MAX_VALUE, поскольку размер DelayQueue не ограничен. |
E |
remove() |
Извлекает и удаляет истёкшую голову этой очереди или выбрасывает исключение, если в очереди нет истёкших элементов. |
boolean |
remove |
Удаляет одно вхождение указанного элемента из этой очереди, если он присутствует, независимо от того, истёк ли его срок действия. |
int |
size() |
Возвращает количество элементов в этой коллекции. |
E |
take() |
Извлекает и удаляет истёкшую голову этой очереди, при необходимости ожидая появления в ней истёкшего элемента. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этой очереди. |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этой очереди; тип массива во время выполнения соответствует типу указанного массива. |
Методы, объявленные в классе AbstractQueue
addAll, element
Методы, объявленные в классе AbstractCollection
contains, containsAll, isEmpty, removeAll, retainAll, toString
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе BlockingQueue
contains
Методы, объявленные в интерфейсе 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, если в очереди нет истёкших элементов.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— если ожидание было прервано
remove
public E remove()
- Определено в:
-
removeв интерфейсеQueue<E extends Delayed> - Переопределяет:
-
removeв классеAbstractQueue<E extends Delayed> - Возвращает:
- истёкшую голову этой очереди
- Выбрасывает:
-
NoSuchElementException— если в очереди нет элементов с истёкшей задержкой - Начиная с версии:
- 21
peek
public E peek()
null, если очередь пуста. В отличие от poll, если в очереди нет истёкших элементов, этот метод возвращает элемент, который истечёт следующим, если такой элемент есть.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, поскольку вместимость DelayQueue не ограничена.- Определено в:
-
remainingCapacityв интерфейсеBlockingQueue<E extends Delayed> - Возвращает:
Integer.MAX_VALUE
toArray
public Object[] toArray()
Возвращаемый массив является «безопасным»: эта очередь не хранит на него ссылок. (Иными словами, этот метод должен выделять новый массив.) Поэтому вызывающий код может свободно изменять возвращённый массив.
Этот метод служит связующим звеном между API на основе массивов и API на основе коллекций.
- Определено в:
-
toArrayв интерфейсеCollection<E extends Delayed> - Переопределяет:
-
toArrayв классеAbstractCollection<E extends Delayed> - Возвращает:
- массив, содержащий все элементы этой очереди
toArray
public <T> T[] toArray(T[] a)
Если очередь помещается в указанный массив с запасом (то есть в массиве больше элементов, чем в очереди), элемент массива, следующий непосредственно за концом очереди, устанавливается в null.
Как и метод toArray(), этот метод служит связующим звеном между API на основе массивов и 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()
Возвращаемый итератор является слабо согласованным.
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/concurrent/DelayQueue.html