Spec-Zone.ru › OpenJDK 8

Класс DelayQueue<E extends Delayed>

  • java.lang.Object
    • java.util.AbstractCollection<E>
      • java.util.AbstractQueue<E>
        • java.util.concurrent.DelayQueue<E>
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 возвращает количество как истекших, так и неистекших элементов. Эта очередь не допускает нулевых элементов.

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

boolean remove(Object o)

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

int size()

Возвращает количество элементов в этой коллекции.

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.Queue

element, remove

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

addAll, containsAll, equals, hashCode, isEmpty, parallelStream, removeAll, removeIf, retainAll, spliterator, stream

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

forEach

Конструкторы

DelayQueue

public DelayQueue()

Создаёт новый DelayQueue, который изначально пуст.

DelayQueue

public DelayQueue(Collection<? extends E> c)

Создаёт DelayQueue, содержащий изначально элементы заданного набора экземпляров Delayed.

Параметры:
c - набор элементов, которые должны содержаться изначально
Исключения:
NullPointerException - если указанный набор или любой из его элементов равны null

Методы

add

public boolean add(E e)

Вставляет указанный элемент в эту очередь отложенных задач.

Определено в:
add в интерфейсе Collection<E extends Delayed>
Определено в:
add в интерфейсе BlockingQueue<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 - если прервано ожидание

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>
Определено в:
size в классе AbstractCollection<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.

Определено в:
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 в интерфейсе Collection<E extends Delayed>
Определено в:
remove в интерфейсе BlockingQueue<E extends Delayed>
Переопределено в:
remove в классе AbstractCollection<E extends Delayed>
Параметры:
o - элемент, который необходимо удалить из этой коллекции, если он присутствует
Возвращает:
true если элемент был удалён в результате этого вызова

iterator

public Iterator<E> iterator()

Возвращает итератор по всем элементам (как истекшим, так и не истекшим) в этой очереди. Итератор не возвращает элементы в определённом порядке.

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

Определено в:
iterator в интерфейсе Iterable<E extends Delayed>
Определено в:
iterator в интерфейсе Collection<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.

Spec-Zone.ru

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