Spec-Zone.ru › OpenJDK 27

Интерфейс 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
Модификатор и тип Метод Описание
boolean add(E e)
Вставляет указанный элемент в эту очередь, если это можно сделать немедленно без нарушения ограничений емкости, возвращая true в случае успеха и выбрасывая IllegalStateException, если в данный момент нет свободного места.
boolean contains(Object o)
Возвращает true, если эта очередь содержит указанный элемент.
int drainTo(Collection<? super E> c)
Удаляет все доступные элементы из этой очереди и добавляет их в указанную коллекцию.
int drainTo(Collection<? super E> c, int maxElements)
Удаляет не более заданного количества доступных элементов из этой очереди и добавляет их в указанную коллекцию.
boolean offer(E e)
Вставляет указанный элемент в эту очередь, если это можно сделать немедленно без нарушения ограничений емкости, возвращая true в случае успеха и false, если в данный момент нет свободного места.
boolean offer(E e, long timeout, TimeUnit unit)
Вставляет указанный элемент в эту очередь, ожидая при необходимости вплоть до указанного времени ожидания, пока освободится место.
E poll(long timeout, TimeUnit unit)
Извлекает и удаляет голову этой очереди, ожидая при необходимости вплоть до указанного времени ожидания, пока элемент станет доступным.
void put(E e)
Вставляет указанный элемент в эту очередь, ожидая при необходимости освобождения места.
int remainingCapacity()
Возвращает количество дополнительных элементов, которые эта очередь в идеале (при отсутствии ограничений по памяти или ресурсам) может принять без блокировки, или Integer.MAX_VALUE, если внутреннего ограничения нет.
boolean remove(Object o)
Удаляет один экземпляр указанного элемента из этой очереди, если он присутствует.
E take()
Извлекает и удаляет голову этой очереди, ожидая при необходимости, пока элемент станет доступным.

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

addAll, clear, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray
Модификатор и тип Метод Описание
boolean addAll(Collection<? extends E> c)
Добавляет все элементы из указанной коллекции в эту коллекцию (необязательная операция).
void clear()
Удаляет все элементы из этой коллекции (необязательная операция).
boolean containsAll(Collection<?> c)
Возвращает true, если эта коллекция содержит все элементы из указанной коллекции.
boolean equals(Object o)
Сравнивает указанный объект с этой коллекцией на равенство.
int hashCode()
Возвращает значение хэш-кода для этой коллекции.
boolean isEmpty()
Возвращает true, если эта коллекция не содержит элементов.
Iterator<E> iterator()
Возвращает итератор по элементам в этой коллекции.
default Stream<E> parallelStream()
Возвращает возможно параллельный Stream с этой коллекцией в качестве источника.
boolean removeAll(Collection<?> c)
Удаляет все элементы этой коллекции, которые также содержатся в указанной коллекции (необязательная операция).
default boolean removeIf(Predicate<? super E> filter)
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату (необязательная операция).
boolean retainAll(Collection<?> c)
Сохраняет только те элементы в этой коллекции, которые содержатся в указанной коллекции (необязательная операция).
int size()
Возвращает количество элементов в этой коллекции.
default Spliterator<E> spliterator()
Создает Spliterator по элементам в этой коллекции.
default Stream<E> stream()
Возвращает последовательный Stream с этой коллекцией в качестве источника.
Object[] toArray()
Возвращает массив, содержащий все элементы в этой коллекции.
default <T> T[] toArray(IntFunction<T[]> generator)
Возвращает массив, содержащий все элементы в этой коллекции, используя предоставленную функцию generator для выделения возвращаемого массива.
<T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы в этой коллекции; тип возвращаемого массива во время выполнения соответствует типу указанного массива.

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

forEach
Модификатор и тип Метод Описание
default void forEach(Consumer<? super E> action)
Выполняет данное действие для каждого элемента Iterable до тех пор, пока все элементы не будут обработаны или действие не выбросит исключение.

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

element, peek, poll, remove
Модификатор и тип Метод Описание
E element()
Извлекает, но не удаляет голову этой очереди.
E peek()
Извлекает, но не удаляет голову этой очереди или возвращает null, если эта очередь пуста.
E poll()
Извлекает и удаляет голову этой очереди или возвращает null, если эта очередь пуста.
E 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, 2026, 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.

Spec-Zone.ru

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