Spec-Zone.ru › OpenJDK 25

Interface TransferQueue<E>

Параметры типа:
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.

Начиная с:
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)
Передает элемент потребителю, если это возможно сделать до истечения времени ожидания.

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

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

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

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

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

forEach

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

element, peek, poll, remove

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

tryTransfer

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

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

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

transfer

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

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

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

tryTransfer

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

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

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

hasWaitingConsumer

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

getWaitingConsumerCount

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

Сообщить об ошибке или предложить улучшение
Для получения дополнительной справочной информации по API и документации для разработчиков см. документацию по Java SE, содержащую более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные пути и примеры рабочего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/util/concurrent/TransferQueue.html

Spec-Zone.ru

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