Spec-Zone.ru › OpenJDK 24

Класс 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() будет блокирован, ожидая истечения времени ожидания этого элемента.

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

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

Этот класс является членом набора коллекций Java.

С:
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)
Возвращает массив, содержащий все элементы в этой очереди; тип массива, возвращаемого во время выполнения, — это тип указанного массива.

Методы, объявленные в классе java.util.AbstractQueue

addAll, element

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

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

forEach

Методы, объявленные в интерфейсе java.util.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
Удаляет все доступные элементы из этой очереди и добавляет их в заданную коллекцию. Эта операция может быть более эффективной, чем многократное вызов метода 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. Кроме того, поведение этой операции не определено, если указанная коллекция изменяется во время выполнения операции.
Specified by:
drainTo в интерфейсе BlockingQueue<E extends Delayed>
Parameters:
c - коллекция для перевода элементов
maxElements - максимальное количество передаваемых элементов
Returns:
количество переданных элементов
Throws:
UnsupportedOperationException - если добавление элементов не поддерживается заданной коллекцией
ClassCastException - если класс элемента этой очереди препятствует его добавлению в указанную коллекцию
NullPointerException - если заданная коллекция равна null
IllegalArgumentException - если заданная коллекция является этой очередью или какое-то свойство элемента этой очереди препятствует его добавлению в указанную коллекцию

clear

public void clear()
Атомарно удаляет все элементы из этой очереди задержки. Очередь будет пустой после возврата этого вызова. Элементы с неистекшей задержкой не ожидают; они просто удаляются из очереди.
Specified by:
clear в интерфейсе Collection<E extends Delayed>
Overrides:
clear в классе AbstractQueue<E extends Delayed>

remainingCapacity

public int remainingCapacity()
Всегда возвращает Integer.MAX_VALUE, потому что DelayQueue не ограничена по емкости.
Specified by:
remainingCapacity в интерфейсе BlockingQueue<E extends Delayed>
Returns:
Integer.MAX_VALUE

toArray

public Object[] toArray()
Возвращает массив, содержащий все элементы в этой очереди. Элементы возвращаемого массива не упорядочены особым образом.

Возвращаемый массив будет «безопасным» в том смысле, что к нему не сохраняются ссылки этой очередью. (Иными словами, этот метод должен выделить новый массив). Таким образом, вызывающая сторона свободна изменять возвращаемый массив.

Этот метод служит мостом между массивоориентированными и коллекционно-ориентированными API.

Specified by:
toArray в интерфейсе Collection<E extends Delayed>
Overrides:
toArray в классе AbstractCollection<E extends Delayed>
Returns:
массив, содержащий все элементы в этой очереди

toArray

public <T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы в этой очереди; тип времени выполнения возвращаемого массива соответствует типу заданного массива. Элементы возвращаемого массива не упорядочены особым образом. Если очередь помещается в заданный массив, он возвращается в нем. В противном случае выделяется новый массив с типом времени выполнения заданного массива и размером этой очереди.

Если эта очередь помещается в указанный массив с избыточными местами (т. е. массив имеет больше элементов, чем эта очередь), элемент в массиве непосредственно после конца очереди устанавливается в null.

Как и метод toArray(), этот метод служит мостом между массивоориентированными и коллекционно-ориентированными API. Кроме того, этот метод позволяет точно контролировать тип времени выполнения выходного массива и, при определенных обстоятельствах, может использоваться для экономии затрат на выделение памяти.

Следующий код можно использовать для выгрузки очереди задержки в новый выделенный массив Delayed:

 Delayed[] a = q.toArray(new Delayed[0]);
Обратите внимание, что toArray(new Object[0]) идентичен по функции toArray().
Specified by:
toArray в интерфейсе Collection<E extends Delayed>
Overrides:
toArray в классе AbstractCollection<E extends Delayed>
Type Parameters:
T - тип компонента массива для хранения коллекции
Parameters:
a - массив, в который должны быть сохранены элементы очереди, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа времени выполнения
Returns:
массив, содержащий все элементы в этой очереди
Throws:
ArrayStoreException - если тип времени выполнения указанного массива не является надтипом типа времени выполнения каждого элемента в этой очереди
NullPointerException - если указанный массив равен null

remove

public boolean remove(Object o)
Удаляет один экземпляр указанного элемента из этой очереди, если он присутствует, независимо от того, истекло ли время его ожидания или нет.
Specified by:
remove в интерфейсе BlockingQueue<E extends Delayed>
Specified by:
remove в интерфейсе Collection<E extends Delayed>
Overrides:
remove в классе AbstractCollection<E extends Delayed>
Parameters:
o - элемент, который нужно удалить из этой коллекции, если он присутствует
Returns:
true, если в результате этого вызова был удален элемент

iterator

public Iterator<E> iterator()
Возвращает итератор по всем элементам (как истекшим, так и не истекшим) в этой очереди. Итератор не возвращает элементы в каком-либо конкретном порядке.

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

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

Сообщить об ошибке или предложить улучшение
Для получения дополнительной справки по API и документации для разработчиков см. Java SE Documentation, которая содержит более подробные описания, ориентированные на разработчика, с концептуальными обзорами, определениями терминов, решениями и примерами рабочего кода. Другие версии.
Java — товарный знак или зарегистрированный товарный знак Oracle и/или ее аффилированных компаний в США и других странах.
Copyright © 1993, 2025, Oracle и/или ее аффилированные компании, 500 Oracle Parkway, Redwood Shores, CA 94065 США.
Все права защищены. Использование регулируется лицензионными условиями и политикой перераспределения документации.
DRAFT 24-ea+36-Debian-1

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/DelayQueue.html

Spec-Zone.ru

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