Spec-Zone.ru › OpenJDK 21

Интерфейс TransferQueue<E>

Type Parameters:
E - тип элементов, хранящихся в этой очереди
Все суперинтерфейсы:
BlockingQueue<E>, Collection<E>, Iterable<E>, Queue<E>
Все известные реализующие классы:
LinkedTransferQueue
public interface TransferQueue<E> extends BlockingQueue<E>
Очередь BlockingQueue, в которой производители могут ожидать получения элементов потребителями. Очередь TransferQueue может быть полезна, например, в приложениях обмена сообщениями, в которых производители иногда (используя метод transfer(E)) ожидают получения элементов потребителями, вызывающими take или poll, в то время как в другие моменты добавляют элементы (через метод put) без ожидания их получения. Доступны также неблокирующие и с таймаутом версии tryTransfer. Также можно запросить у очереди TransferQueue наличие ожидающих потребителей с помощью hasWaitingConsumer(), что аналогично операции peek.

Как и другие блокирующие очереди, очередь TransferQueue может быть ограничена по емкости. Если это так, попытка операции передачи может сначала заблокировать ожидание доступного места, и/или впоследствии заблокировать ожидание получения потребителем. Обратите внимание, что в очереди с нулевой емкостью, такой как SynchronousQueue, put и transfer фактически являются синонимами.

Этот интерфейс является членом Java Collections Framework.

Since:
1.7

Краткое описание методов

Модификатор и тип Метод Описание
int getWaitingConsumerCount()
Возвращает оценку количества потребителей, ожидающих получения элементов с помощью BlockingQueue.take() или операции с таймаутом poll.
boolean hasWaitingConsumer()
Возвращает true если есть хотя бы один потребитель, ожидающий получения элемента с помощью BlockingQueue.take() или операции с таймаутом poll.
void transfer(E e)
Переносит элемент к потребителю, ожидая, если необходимо.
boolean tryTransfer(E e)
Немедленно передает элемент ожидающему потребителю, если это возможно.
boolean tryTransfer(E e, long timeout, TimeUnit unit)
Передает элемент потребителю, если это возможно до истечения таймаута.

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

add, contains, drainTo, drainTo, offer, offer, poll, put, remainingCapacity, remove, take

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

addAll, clear, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray

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

forEach

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

element, peek, poll, remove

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

tryTransfer

boolean tryTransfer(E e)
Немедленно передает элемент ожидающему потребителю, если это возможно.

Более точно, немедленно передает указанный элемент, если существует потребитель, уже ожидающий его (в методе BlockingQueue.take() или операции с таймаутом poll), в противном случае возвращает false без добавления элемента в очередь.

Parameters:
e - элемент для передачи
Returns:
true если элемент был передан, иначе false
Throws:
ClassCastException - если класс указанного элемента не позволяет добавить его в эту очередь
NullPointerException - если указанный элемент равен null
IllegalArgumentException - если какие-либо свойства указанного элемента не позволяют добавить его в эту очередь

transfer

void transfer(E e) throws InterruptedException
Переносит элемент к потребителю, ожидая, если необходимо.

Более точно, немедленно передает указанный элемент, если существует потребитель, уже ожидающий его (в методе BlockingQueue.take() или операции с таймаутом poll), в противном случае ожидает, пока элемент не будет получен потребителем.

Parameters:
e - элемент для передачи
Throws:
InterruptedException - если поток прерван во время ожидания, в этом случае элемент не остается в очереди
ClassCastException - если класс указанного элемента не позволяет добавить его в эту очередь
NullPointerException - если указанный элемент равен null
IllegalArgumentException - если какие-либо свойства указанного элемента не позволяют добавить его в эту очередь

tryTransfer

boolean tryTransfer(E e, long timeout, TimeUnit unit) throws InterruptedException
Передает элемент потребителю, если это возможно до истечения таймаута.

Более точно, немедленно передает указанный элемент, если существует потребитель, уже ожидающий его (в методе BlockingQueue.take() или операции с таймаутом poll), в противном случае ожидает, пока элемент не будет получен потребителем, возвращает false если указанное время ожидания истекло, прежде чем элемент мог быть передан.

Parameters:
e - элемент для передачи
timeout - время ожидания, прежде чем отказаться, в единицах unit
unit - TimeUnit определяющая, как интерпретировать параметр timeout
Returns:
true если успешно, или false если заданное время ожидания истекло до завершения, в этом случае элемент не остается в очереди
Throws:
InterruptedException - если поток прерван во время ожидания, в этом случае элемент не остается в очереди
ClassCastException - если класс указанного элемента не позволяет добавить его в эту очередь
NullPointerException - если указанный элемент равен null
IllegalArgumentException - если какие-либо свойства указанного элемента не позволяют добавить его в эту очередь

hasWaitingConsumer

boolean hasWaitingConsumer()
Возвращает true если есть хотя бы один ожидающий потребитель, получающий элемент с помощью BlockingQueue.take() или операции с таймаутом poll. Значение возврата представляет собой мгновенное состояние дел.
Returns:
true если есть хотя бы один ожидающий потребитель

getWaitingConsumerCount

int getWaitingConsumerCount()
Возвращает оценку количества потребителей, ожидающих получения элементов с помощью BlockingQueue.take() или операции с таймаутом poll. Возвращаемое значение является приближением мгновенного состояния дел, которое может быть неточным, если потребители завершили или отказались от ожидания. Значение может быть полезно для мониторинга и эвристики, но не для управления синхронизацией. Реализации этого метода, вероятно, будут заметно медленнее, чем реализации для hasWaitingConsumer().
Returns:
количество потребителей, ожидающих получения элементов

© 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/TransferQueue.html

Spec-Zone.ru

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