Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
boolean addAll(Collection<? extends E> c)
Добавляет все элементы заданной коллекции в эту очередь.
E element()
Извлекает, но не удаляет голову этой очереди.

Методы, объявленные в классе AbstractCollection

contains, containsAll, isEmpty, removeAll, retainAll, toString
Модификатор и тип Метод Описание
boolean contains(Object o)
Возвращает true, если эта коллекция содержит указанный элемент.
boolean containsAll(Collection<?> c)
Возвращает true, если эта коллекция содержит все элементы заданной коллекции.
boolean isEmpty()
Возвращает true, если эта коллекция не содержит элементов.
boolean removeAll(Collection<?> c)
Удаляет из этой коллекции все элементы, которые также содержатся в заданной коллекции (необязательная операция).
boolean retainAll(Collection<?> c)
Оставляет в этой коллекции только элементы, содержащиеся в заданной коллекции (необязательная операция).
String toString()
Возвращает строковое представление этой коллекции.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс объекта Object во время выполнения.
int hashCode()
Возвращает значение хеш-кода этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

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

contains
Модификатор и тип Метод Описание
boolean contains(Object o)
Возвращает true, если эта очередь содержит указанный элемент.

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

equals, hashCode, parallelStream, removeIf, spliterator, stream, toArray
Модификатор и тип Метод Описание
boolean equals(Object o)
Сравнивает указанный объект с этой коллекцией на равенство.
int hashCode()
Возвращает значение хеш-кода этой коллекции.
default Stream<E> parallelStream()
Возвращает, возможно параллельный, Stream, источником которого является эта коллекция.
default boolean removeIf(Predicate<? super E> filter)
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату (необязательная операция).
default Spliterator<E> spliterator()
Создаёт Spliterator для элементов этой коллекции.
default Stream<E> stream()
Возвращает последовательный Stream, источником которого является эта коллекция.
default <T> T[] toArray(IntFunction<T[]> generator)
Возвращает массив, содержащий все элементы этой коллекции; для выделения возвращаемого массива используется предоставленная функция generator.

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

forEach
Модификатор и тип Метод Описание
default void forEach(Consumer<? super E> action)
Выполняет заданное действие для каждого элемента Iterable, пока не будут обработаны все элементы или действие не выбросит исключение.

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

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
Удаляет из этой очереди все доступные элементы и добавляет их в указанную коллекцию. Эта операция может быть эффективнее, чем многократный вызов метода poll для этой очереди. Сбой при попытке добавить элементы в коллекцию 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, 2026, 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.

Spec-Zone.ru

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