BlockingQueue
in which producers may wait for consumers
to receive elements. A TransferQueue
may be useful for
example in message passing applications in which producers
sometimes (using method transfer
) await receipt of
elements by consumers invoking take
or poll
, while
at other times enqueue elements (via method put
) without
waiting for receipt.
Non-blocking and
time-out versions of
tryTransfer
are also available.
A TransferQueue
may also be queried, via hasWaitingConsumer
, whether there are any threads waiting for
items, which is a converse analogy to a peek
operation.
Like other blocking queues, a TransferQueue
may be
capacity bounded. If so, an attempted transfer operation may
initially block waiting for available space, and/or subsequently
block waiting for reception by a consumer. Note that in a queue
with zero capacity, such as SynchronousQueue
, put
and transfer
are effectively synonymous.
This interface is a member of the Java Collections Framework.
Modifier and Type | Method and Description |
---|---|
public int | Returns: the number of consumers waiting to receive elementsReturns an estimate of the number of consumers waiting to
receive elements via |
public boolean | Returns: true if there is at least one waiting consumerReturns |
public void | transfer(E
the element to transfer e)Transfers the element to a consumer, waiting if necessary to do so. |
public boolean | Returns: true if the element was transferred, else
false the element to transfer e)Transfers the element to a waiting consumer immediately, if possible. |
public boolean | Returns: true if successful, or false if
the specified waiting time elapses before completion,
in which case the element is not left enqueuedthe element to transfer e, long how long to wait before giving up, in units of
timeout, TimeUnit unit a unit)TimeUnit determining how to interpret the
timeout parameterTransfers the element to a consumer if it is possible to do so before the timeout elapses. |
getWaitingConsumerCount | back to summary |
---|---|
public int getWaitingConsumerCount() Returns an estimate of the number of consumers waiting to
receive elements via
|
hasWaitingConsumer | back to summary |
---|---|
public boolean hasWaitingConsumer() Returns
|
transfer | back to summary |
---|---|
public void transfer(E e) throws InterruptedException Transfers the element to a consumer, waiting if necessary to do so. More precisely, transfers the specified element immediately
if there exists a consumer already waiting to receive it (in
|
tryTransfer | back to summary |
---|---|
public boolean tryTransfer(E e) Transfers the element to a waiting consumer immediately, if possible. More precisely, transfers the specified element immediately
if there exists a consumer already waiting to receive it (in
|
tryTransfer | back to summary |
---|---|
public boolean tryTransfer(E e, long timeout, TimeUnit unit) throws InterruptedException Transfers the element to a consumer if it is possible to do so before the timeout elapses. More precisely, transfers the specified element immediately
if there exists a consumer already waiting to receive it (in
|