Spec-Zone .ru
спецификации, руководства, описания, API
|
E
- тип элементов сохранен в этом набореpublic interface TransferQueue<E> extends BlockingQueue<E>
BlockingQueue
в котором производители могут ожидать потребителей, чтобы получить элементы. A TransferQueue
может быть полезным например в приложениях передачи сообщений в который производители иногда (использующий метод transfer(E)
) ждите получения элементов потребителями, вызывающими take
или poll
, в то время как в других случаях ставят в очередь элементы (через метод put
) не ожидая получения. Неблокирование и версии тайм-аута tryTransfer
также доступны. A TransferQueue
май также быть запрошенным, через hasWaitingConsumer()
, есть ли какие-либо потоки, ожидающие элементов, который является обратной аналогией с a peek
работа. Как другие очереди блокирования, a TransferQueue
может быть ограниченная емкость. Если так, предпринятая работа передачи может первоначально блокировать ожидание свободного места, и/или впоследствии блокировать ожидание приема потребителем. Отметьте это в очереди с нулевой емкостью, такой как SynchronousQueue
, put
и transfer
эффективно синонимичны.
Этот интерфейс является элементом Платформы Наборов Java.
Модификатор и Тип | Метод и Описание |
---|---|
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)
Передает элемент потребителю, если возможно сделать так прежде, чем тайм-аут протекает.
|
boolean tryTransfer(E e)
Более точно, сразу передает указанный элемент, если там существует потребитель, уже ожидающий, чтобы получить это (в BlockingQueue.take()
или синхронизированный poll
), иначе возврат false
не ставя в очередь элемент.
e
- элемент, чтобы передатьtrue
если элемент был передан, еще false
ClassCastException
- если класс указанного элемента препятствует тому, чтобы это было добавлено к этой очередиNullPointerException
- если указанный элемент является нулемIllegalArgumentException
- если некоторое свойство указанного элемента препятствует тому, чтобы это было добавлено к этой очередиvoid transfer(E e) throws InterruptedException
Более точно, сразу передает указанный элемент, если там существует потребитель, уже ожидающий, чтобы получить это (в BlockingQueue.take()
или синхронизированный poll
), еще ожидает, пока элемент не получается потребителем.
e
- элемент, чтобы передатьInterruptedException
- если прервано, ожидая, когда элемент не оставляют ставившим в очередьClassCastException
- если класс указанного элемента препятствует тому, чтобы это было добавлено к этой очередиNullPointerException
- если указанный элемент является нулемIllegalArgumentException
- если некоторое свойство указанного элемента препятствует тому, чтобы это было добавлено к этой очередиboolean tryTransfer(E e, long timeout, TimeUnit unit) throws InterruptedException
Более точно, сразу передает указанный элемент, если там существует потребитель, уже ожидающий, чтобы получить это (в BlockingQueue.take()
или синхронизированный poll
), еще ожидает, пока элемент не получается потребителем, возвращаясь false
если указанное время ожидания протекает прежде, чем элемент может быть передан.
e
- элемент, чтобы передатьtimeout
- сколько времени ожидать перед отказом в модулях unit
unit
- a TimeUnit
определение, как интерпретировать timeout
параметрtrue
в случае успеха, или false
если указанное время ожидания протекает перед завершением, когда элемент не оставляют ставившим в очередьInterruptedException
- если прервано, ожидая, когда элемент не оставляют ставившим в очередьClassCastException
- если класс указанного элемента препятствует тому, чтобы это было добавлено к этой очередиNullPointerException
- если указанный элемент является нулемIllegalArgumentException
- если некоторое свойство указанного элемента препятствует тому, чтобы это было добавлено к этой очередиboolean hasWaitingConsumer()
true
если есть по крайней мере один потребитель, ожидающий, чтобы получить элемент через BlockingQueue.take()
или синхронизированный poll
. Возвращаемое значение представляет мгновенное положение дел.true
если есть по крайней мере один ожидающий потребительint getWaitingConsumerCount()
BlockingQueue.take()
или синхронизированный poll
. Возвращаемое значение является приближением мгновенного положения дел, которое может быть неточным, если потребители завершились или бросили ожидать. Значение может быть полезным для контроля и эвристики, но не для управления синхронизацией. Реализации этого метода, вероятно, будут заметно медленнее чем те для hasWaitingConsumer()
.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.