Spec-Zone.ru › OpenJDK 21

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

Эта очередь не допускает нулевых элементов.

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

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

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

добавить

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

предложить

public boolean offer(E e)
Вставляет указанный элемент в эту очередь отложенных задач.
Унаследованно от:
offer в интерфейсе BlockingQueue<E extends Delayed>
Унаследованно от:
offer в интерфейсе Queue<E extends Delayed>
Параметры:
e - элемент для добавления
Возвращает:
true
Исключения:
NullPointerException - если указанный элемент равен null

поместить

public void put(E e)
Вставляет указанный элемент в эту очередь отложенных задач. Поскольку очередь неограничена, этот метод никогда не заблокируется.
Унаследованно от:
put в интерфейсе BlockingQueue<E extends Delayed>
Параметры:
e - элемент для добавления
Исключения:
NullPointerException - если указанный элемент равен null

предложить

public boolean offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в эту очередь отложенных задач. Поскольку очередь неограничена, этот метод никогда не заблокируется.
Унаследованно от:
offer в интерфейсе BlockingQueue<E extends Delayed>
Параметры:
e - элемент для добавления
timeout - Этот параметр игнорируется, так как метод никогда не блокируется
unit - Этот параметр игнорируется, так как метод никогда не блокируется
Возвращает:
true
Исключения:
NullPointerException - если указанный элемент равен null

получить и удалить

public E poll()
Получает и удаляет голово этой очереди, или возвращает null если в этой очереди нет элементов.
Унаследованно от:
poll в интерфейсе Queue<E extends Delayed>
Возвращает:
голову этой очереди, или null если в этой очереди нет элементов с истекшим сроком ожидания

взять

public E take() throws InterruptedException
Получает и удаляет голово этой очереди, ожидая, если необходимо, пока в этой очереди не появится элемент.
Унаследованно от:
take в интерфейсе BlockingQueue<E extends Delayed>
Возвращает:
голово этой очереди
Исключения:
InterruptedException - если прервано ожидание

получить и удалить

public E poll(long timeout, TimeUnit unit) throws InterruptedException
Получает и удаляет голово этой очереди, ожидая, если необходимо, пока в этой очереди не появится элемент, или пока не истечёт заданное время ожидания.
Унаследованно от:
poll в интерфейсе BlockingQueue<E extends Delayed>
Параметры:
timeout - время ожидания, прежде чем отказаться, в единицах unit
unit - TimeUnit определяющее, как интерпретировать параметр timeout
Возвращает:
голово этой очереди, или null если заданное время ожидания истекло, прежде чем появился элемент с истекшим сроком ожидания
Исключения:
InterruptedException - если прервано ожидание

удалить

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

получить

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

размер

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

перегнать в

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

перегнать в

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

очистить

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.

Определено в:
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, 2023, 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/21/docs/api/java.base/java/util/concurrent/DelayQueue.html

Spec-Zone.ru

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