Spec-Zone.ru › OpenJDK 25

Класс DelayQueue<E extends Delayed>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractQueue<E>
java.util.concurrent.DelayQueue<E>
Параметры типа:
E — тип элементов, хранящихся в этой очереди
Все реализуемые интерфейсы:
Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E>
Неограниченная блокирующая очередь элементов типа Delayed, в которой элемент обычно становится доступным для удаления после истечения его задержки.

Элемент считается истёкшим, если его метод getDelay(TimeUnit.NANOSECONDS) возвращает значение, меньшее или равное нулю.

Элемент считается головой очереди, если он имеет самое раннее время истечения — в прошлом или будущем, — при наличии такого элемента.

Элемент считается истёкшей головой очереди, если он является истёкшим элементом с самым ранним временем истечения в прошлом, при наличии такого элемента. Если истёкшая голова имеется, она также является головой.

Хотя этот класс реализует интерфейс BlockingQueue, он намеренно нарушает общий контракт BlockingQueue: следующие методы не учитывают наличие неистёкших элементов и удаляют только истёкшую голову:

  • poll()
  • poll(long,TimeUnit)
  • take()
  • remove()

Все остальные методы работают как с истёкшими, так и с неистёкшими элементами. Например, метод size() возвращает количество всех элементов. Метод peek() может вернуть (ненулевую) голову, даже если метод take() будет блокироваться в ожидании истечения срока действия этого элемента.

В этой очереди не допускаются элементы со значением null.

Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator. Итератор, предоставляемый методом iterator(), не гарантирует обход элементов DelayQueue в каком-либо определённом порядке.

Этот класс является частью Java Collections Framework.

Начиная с версии:
1.5

Краткое описание конструкторов

Конструктор Описание
DelayQueue()
Создаёт новую DelayQueue, изначально пустую.
DelayQueue(Collection<? extends E> c)
Создаёт DelayQueue, изначально содержащую элементы указанной коллекции экземпляров Delayed.

Краткое описание методов

Модификатор и тип Метод Описание
boolean add(E e)
Вставляет указанный элемент в эту очередь задержки.
void clear()
Атомарно удаляет все элементы из этой очереди задержки.
int drainTo(Collection<? super E> c)
Удаляет все доступные элементы из этой очереди и добавляет их в указанную коллекцию.
int drainTo(Collection<? super E> c, int maxElements)
Удаляет из этой очереди не более указанного количества доступных элементов и добавляет их в указанную коллекцию.
Iterator<E> iterator()
Возвращает итератор по всем элементам этой очереди (как истёкшим, так и неистёкшим).
boolean offer(E e)
Вставляет указанный элемент в эту очередь задержки.
boolean offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в эту очередь задержки.
E peek()
Извлекает, но не удаляет голову этой очереди или возвращает null, если очередь пуста.
E poll()
Извлекает и удаляет истёкшую голову этой очереди или возвращает null, если в очереди нет истёкших элементов.
E poll(long timeout, TimeUnit unit)
Извлекает и удаляет истёкшую голову этой очереди, при необходимости ожидая появления в ней истёкшего элемента или истечения указанного времени ожидания.
void put(E e)
Вставляет указанный элемент в эту очередь задержки.
int remainingCapacity()
Всегда возвращает Integer.MAX_VALUE, поскольку размер DelayQueue не ограничен.
E remove()
Извлекает и удаляет истёкшую голову этой очереди или выбрасывает исключение, если в очереди нет истёкших элементов.
boolean remove(Object o)
Удаляет одно вхождение указанного элемента из этой очереди, если он присутствует, независимо от того, истёк ли его срок действия.
int size()
Возвращает количество элементов в этой коллекции.
E take()
Извлекает и удаляет истёкшую голову этой очереди, при необходимости ожидая появления в ней истёкшего элемента.
Object[] toArray()
Возвращает массив, содержащий все элементы этой очереди.
<T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы этой очереди; тип массива во время выполнения соответствует типу указанного массива.

Методы, объявленные в классе 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

Методы, объявленные в интерфейсе Iterable

forEach

Методы, объявленные в интерфейсе Queue

element

Подробное описание конструкторов

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 — если ожидание было прервано

remove

public E remove()
Извлекает и удаляет истёкшую голову этой очереди или выбрасывает исключение, если в очереди нет истёкших элементов.
Определено в:
remove в интерфейсе Queue<E extends Delayed>
Переопределяет:
remove в классе AbstractQueue<E extends Delayed>
Возвращает:
истёкшую голову этой очереди
Выбрасывает:
NoSuchElementException — если в очереди нет элементов с истёкшей задержкой
Начиная с версии:
21

peek

public E peek()
Извлекает, но не удаляет голову этой очереди или возвращает null, если очередь пуста. В отличие от poll, если в очереди нет истёкших элементов, этот метод возвращает элемент, который истечёт следующим, если такой элемент есть.
Определено в:
peek в интерфейсе Queue<E extends Delayed>
Возвращает:
голову этой очереди или null, если очередь пуста

size

public int size()
Описание, скопированное из интерфейса: Collection
Возвращает количество элементов в этой коллекции. Если коллекция содержит более Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.
Определено в:
size в интерфейсе Collection<E extends Delayed>
Возвращает:
количество элементов в этой коллекции

drainTo

public int drainTo(Collection<? super E> c)
Описание, скопированное из интерфейса: BlockingQueue
Удаляет все доступные элементы из этой очереди и добавляет их в указанную коллекцию. Эта операция может быть эффективнее, чем многократное извлечение элементов из очереди. Если при добавлении элементов в коллекцию c возникает ошибка, в момент выброса соответствующего исключения элементы могут находиться ни в одной из коллекций, в одной из них или в обеих. Попытка перенести элементы очереди в неё же приводит к IllegalArgumentException. Кроме того, поведение этой операции не определено, если указанная коллекция изменяется во время её выполнения.
Определено в:
drainTo в интерфейсе BlockingQueue<E extends Delayed>
Параметры:
c — коллекция, в которую следует перенести элементы
Возвращает:
количество перенесённых элементов
Выбрасывает:
UnsupportedOperationException — если указанная коллекция не поддерживает добавление элементов
ClassCastException — если класс элемента этой очереди не позволяет добавить его в указанную коллекцию
NullPointerException — если указанная коллекция равна null
IllegalArgumentException — если указанная коллекция является этой очередью или какое-либо свойство элемента этой очереди не позволяет добавить его в указанную коллекцию

drainTo

public int drainTo(Collection<? super E> c, int maxElements)
Описание, скопированное из интерфейса: BlockingQueue
Удаляет из этой очереди не более указанного количества доступных элементов и добавляет их в указанную коллекцию. Если при добавлении элементов в коллекцию c возникает ошибка, в момент выброса соответствующего исключения элементы могут находиться ни в одной из коллекций, в одной из них или в обеих. Попытка перенести элементы очереди в неё же приводит к 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()
Возвращает итератор по всем элементам этой очереди (как истёкшим, так и неистёкшим). Итератор возвращает элементы в произвольном порядке.

Возвращаемый итератор является слабо согласованным.

Определено в:
iterator в интерфейсе Collection<E extends Delayed>
Определено в:
iterator в интерфейсе Iterable<E extends Delayed>
Определено в:
iterator в классе AbstractCollection<E extends Delayed>
Возвращает:
итератор по элементам этой очереди

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе документации Java SE, содержащем более подробные описания для разработчиков, обзор концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API