Class BlockingBuffer
java.lang.Object
org.apache.commons.collections.collection.SynchronizedCollection
org.apache.commons.collections.buffer.SynchronizedBuffer
org.apache.commons.collections.buffer.BlockingBuffer
- All Implemented Interfaces:
Serializable
,Iterable
,Collection
,Buffer
Decorates another
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.
- Since:
- Commons Collections 3.0
- Version:
- $Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
- Author:
- Stephen Colebourne, Janek Bogucki, Phil Steitz, James Carman
- See Also:
-
Field Summary
Fields inherited from class org.apache.commons.collections.collection.SynchronizedCollection
collection, lock
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
BlockingBuffer
(Buffer buffer) Constructor that wraps (not copies).protected
BlockingBuffer
(Buffer buffer, long timeoutMillis) Constructor that wraps (not copies). -
Method Summary
Modifier and TypeMethodDescriptionboolean
boolean
addAll
(Collection c) static Buffer
Factory method to create a blocking buffer.static Buffer
Factory method to create a blocking buffer with a timeout value.get()
Gets the next value from the buffer, waiting until an object is added if the buffer is empty.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.remove()
Removes the next value from the buffer, waiting until an object is added if the buffer is empty.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.Methods inherited from class org.apache.commons.collections.buffer.SynchronizedBuffer
getBuffer
Methods inherited from class org.apache.commons.collections.collection.SynchronizedCollection
clear, contains, containsAll, decorate, equals, hashCode, isEmpty, iterator, remove, removeAll, retainAll, size, toArray, toArray, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray
-
Constructor Details
-
BlockingBuffer
Constructor that wraps (not copies).- Parameters:
buffer
- the buffer to decorate, must not be null- Throws:
IllegalArgumentException
- if the buffer is null
-
BlockingBuffer
Constructor that wraps (not copies).- Parameters:
buffer
- the buffer to decorate, must not be nulltimeoutMillis
- the timeout value in milliseconds, zero or less for no timeout- Throws:
IllegalArgumentException
- if the buffer is null- Since:
- Commons Collections 3.2
-
-
Method Details
-
decorate
Factory method to create a blocking buffer.- Parameters:
buffer
- the buffer to decorate, must not be null- Returns:
- a new blocking Buffer
- Throws:
IllegalArgumentException
- if buffer is null
-
decorate
Factory method to create a blocking buffer with a timeout value.- Parameters:
buffer
- the buffer to decorate, must not be nulltimeoutMillis
- the timeout value in milliseconds, zero or less for no timeout- Returns:
- a new blocking buffer
- Throws:
IllegalArgumentException
- if the buffer is null- Since:
- Commons Collections 3.2
-
add
- Specified by:
add
in interfaceCollection
- Overrides:
add
in classSynchronizedCollection
-
addAll
- Specified by:
addAll
in interfaceCollection
- Overrides:
addAll
in classSynchronizedCollection
-
get
Gets the next value from the buffer, waiting until an object is added if the buffer is empty. This method uses the default timeout set in the constructor.- Specified by:
get
in interfaceBuffer
- Overrides:
get
in classSynchronizedBuffer
- Returns:
- the next object in the buffer, which is not removed
- Throws:
BufferUnderflowException
- if an interrupt is received
-
get
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.- Parameters:
timeout
- the timeout value in milliseconds- Throws:
BufferUnderflowException
- if an interrupt is receivedBufferUnderflowException
- if the timeout expires- Since:
- Commons Collections 3.2
-
remove
Removes the next value from the buffer, waiting until an object is added if the buffer is empty. This method uses the default timeout set in the constructor.- Specified by:
remove
in interfaceBuffer
- Overrides:
remove
in classSynchronizedBuffer
- Returns:
- the next object in the buffer, which is also removed
- Throws:
BufferUnderflowException
- if an interrupt is received
-
remove
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.- Parameters:
timeout
- the timeout value in milliseconds- Throws:
BufferUnderflowException
- if an interrupt is receivedBufferUnderflowException
- if the timeout expires- Since:
- Commons Collections 3.2
-