public class BlockingBuffer extends SynchronizedBuffer
Buffer
to make get()
and
remove()
block when the Buffer
is empty.
If either get
or remove
is called on an empty
Buffer
, the calling thread waits for notification that
an add
or addAll
operation has completed.
When one or more entries are added to an empty Buffer
,
all threads blocked in get
or remove
are notified.
There is no guarantee that concurrent blocked get
or
remove
requests will be "unblocked" and receive data in the
order that they arrive.
This class is Serializable from Commons Collections 3.1. This class contains an extra field in 3.2, however the serialization specification will handle this gracefully.
collection, lock
Modifier | Constructor and Description |
---|---|
protected |
BlockingBuffer(Buffer buffer)
Constructor that wraps (not copies).
|
protected |
BlockingBuffer(Buffer buffer,
long timeoutMillis)
Constructor that wraps (not copies).
|
Modifier and Type | Method and Description |
---|---|
boolean |
add(Object o) |
boolean |
addAll(Collection c) |
static Buffer |
decorate(Buffer buffer)
Factory method to create a blocking buffer.
|
static Buffer |
decorate(Buffer buffer,
long timeoutMillis)
Factory method to create a blocking buffer with a timeout value.
|
Object |
get()
Gets the next value from the buffer, waiting until an object is
added if the buffer is empty.
|
Object |
get(long timeout)
Gets the next value from the buffer, waiting until an object is
added for up to the specified timeout value if the buffer is empty.
|
Object |
remove()
Removes the next value from the buffer, waiting until an object is
added if the buffer is empty.
|
Object |
remove(long timeout)
Removes the next value from the buffer, waiting until an object is
added for up to the specified timeout value if the buffer is empty.
|
getBuffer
clear, contains, containsAll, decorate, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray, toString
protected BlockingBuffer(Buffer buffer)
buffer
- the buffer to decorate, must not be nullIllegalArgumentException
- if the buffer is nullprotected BlockingBuffer(Buffer buffer, long timeoutMillis)
buffer
- the buffer to decorate, must not be nulltimeoutMillis
- the timeout value in milliseconds, zero or less for no timeoutIllegalArgumentException
- if the buffer is nullpublic static Buffer decorate(Buffer buffer)
buffer
- the buffer to decorate, must not be nullIllegalArgumentException
- if buffer is nullpublic static Buffer decorate(Buffer buffer, long timeoutMillis)
buffer
- the buffer to decorate, must not be nulltimeoutMillis
- the timeout value in milliseconds, zero or less for no timeoutIllegalArgumentException
- if the buffer is nullpublic boolean add(Object o)
add
in interface Collection
add
in class SynchronizedCollection
public boolean addAll(Collection c)
addAll
in interface Collection
addAll
in class SynchronizedCollection
public Object get()
get
in interface Buffer
get
in class SynchronizedBuffer
BufferUnderflowException
- if an interrupt is receivedpublic Object get(long timeout)
timeout
- the timeout value in millisecondsBufferUnderflowException
- if an interrupt is receivedBufferUnderflowException
- if the timeout expirespublic Object remove()
remove
in interface Buffer
remove
in class SynchronizedBuffer
BufferUnderflowException
- if an interrupt is receivedpublic Object remove(long timeout)
timeout
- the timeout value in millisecondsBufferUnderflowException
- if an interrupt is receivedBufferUnderflowException
- if the timeout expiresCopyright © 2001–2015 The Apache Software Foundation. All rights reserved.