Класс 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 возвращает количество элементов, как истекших, так и ожидающих истечения срока. Данная очередь не допускает добавления null-элементов.
Этот класс и его итератор реализуют все необязательные методы интерфейсов Collection и Iterator. Итератор, возвращаемый методом iterator(), не гарантирует обход элементов в DelayQueue в каком-либо определённом порядке.
Этот класс является частью Java Collections Framework.
- Since:
- 1.5
Конструкторы
| Конструктор | Описание |
|---|---|
DelayQueue() | Создаёт новую |
DelayQueue(Collection<? extends E> c) | Создаёт |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
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() | Возвращает голову этой очереди, но не удаляет её, или возвращает |
E | poll() | Возвращает и удаляет голову этой очереди, или возвращает |
E | poll(long timeout,
TimeUnit unit) | Возвращает и удаляет голову этой очереди, ожидая, если необходимо, пока в очереди появится элемент с истекшим сроком ожидания, или пока не истечёт заданное время ожидания. |
void | put(E e) | Добавляет указанный элемент в эту очередь с отложенным выполнением. |
int | remainingCapacity() | Всегда возвращает |
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- aTimeUnitопределяющий способ интерпретации параметра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()
Возвращает итератор по всем элементам (как истекшим, так и не истекшим) в этой очереди. Итератор не возвращает элементы в определённом порядке.
Возвращаемый итератор слабо согласован.
© 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