Класс DelayQueue<E extends Delayed>

Type Parameters:
E - тип элементов, хранящихся в этой очереди
Все реализованные интерфейсы:
Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
public class DelayQueue<E extends Delayed>
extends AbstractQueue<E>
implements BlockingQueue<E>

Неограниченная блокирующая очередь элементов типа Delayed, в которой элемент можно извлечь только после истечения срока его ожидания. Голова очереди — это элемент, срок ожидания которого истек в самые далёкие времена. Если срок ожидания ни для одного элемента не истек, то в очереди нет головы, и метод poll вернёт значение null. Срок ожидания истекает, когда метод getDelay(TimeUnit.NANOSECONDS) элемента возвращает значение меньше или равно нулю. Несмотря на то, что элементы, срок ожидания которых ещё не истек, не могут быть удалены с помощью методов take или poll, они в противном случае обрабатываются как обычные элементы. Например, метод size возвращает количество элементов, как истекших, так и ожидающих истечения срока. Данная очередь не допускает добавления null-элементов.

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

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

Since:
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 не ограничена по размеру.

boolean remove​(Object o)

Удаляет один экземпляр указанного элемента из этой очереди, если он присутствует, независимо от того, истек ли его срок ожидания.

E take()

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

Object[] toArray()

Возвращает массив, содержащий все элементы в этой очереди.

<T> T[] toArray​(T[] a)

Возвращает массив, содержащий все элементы в этой очереди; тип возвращаемого массива — тип указанного массива.

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

addAll, element, remove

Методы, унаследованные от класса 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, size, spliterator, stream, toArray

Методы, унаследованные от интерфейса java.lang.Iterable

forEach

Методы, унаследованные от интерфейса java.util.Queue

element, remove

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

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 - a TimeUnit определяющий способ интерпретации параметра timeout
Возвращает:
голову этой очереди, или null если указанное время ожидания истекает, прежде чем элемент с истекшим сроком ожидания становится доступным
Исключения:
InterruptedException - если прервано ожидание

peek

public E peek()

Извлекает, но не удаляет, голову этой очереди или возвращает null если эта очередь пуста. В отличие от poll, если в очереди нет элементов с истекшим сроком ожидания, этот метод возвращает элемент, который истечёт в ближайшее время, если такой существует.

Указано в:
peek в интерфейсе Queue<E extends Delayed>
Возвращает:
голову этой очереди, или null если эта очередь пуста

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.

Указано в:
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, 2020, 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/11/docs/api/java.base/java/util/concurrent/DelayQueue.html

Spec-Zone .ru
спецификации, руководства, описания, API