Class BoundedBuffer
java.lang.Object
org.apache.commons.collections.collection.SynchronizedCollection
org.apache.commons.collections.buffer.SynchronizedBuffer
org.apache.commons.collections.buffer.BoundedBuffer
- All Implemented Interfaces:
Serializable
,Iterable
,Collection
,BoundedCollection
,Buffer
Decorates another
Buffer
to ensure a fixed maximum size.
Note: This class should only be used if you need to add bounded
behaviour to another buffer. If you just want a bounded buffer then
you should use BoundedFifoBuffer
or CircularFifoBuffer
.
The decoration methods allow you to specify a timeout value. This alters the behaviour of the add methods when the buffer is full. Normally, when the buffer is full, the add method will throw an exception. With a timeout, the add methods will wait for up to the timeout period to try and add the elements.
- Since:
- Commons Collections 3.2
- Version:
- $Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
- Author:
- James Carman, Stephen Colebourne
- See Also:
-
Field Summary
Fields inherited from class org.apache.commons.collections.collection.SynchronizedCollection
collection, lock
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
BoundedBuffer
(Buffer buffer, int maximumSize, long timeout) Constructor that wraps (not copies) another buffer, making it bounded waiting only up to a maximum amount of time. -
Method Summary
Modifier and TypeMethodDescriptionboolean
boolean
addAll
(Collection c) static BoundedBuffer
Factory method to create a bounded buffer.static BoundedBuffer
Factory method to create a bounded buffer that blocks for a maximum amount of time.boolean
isFull()
Returns true if this collection is full and no new elements can be added.iterator()
Iterators must be manually synchronized.int
maxSize()
Gets the maximum size of the collection (the bound).remove()
Gets and removes the next object from the buffer.Methods inherited from class org.apache.commons.collections.buffer.SynchronizedBuffer
decorate, get, getBuffer
Methods inherited from class org.apache.commons.collections.collection.SynchronizedCollection
clear, contains, containsAll, decorate, equals, hashCode, isEmpty, 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, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray, toArray
-
Constructor Details
-
BoundedBuffer
Constructor that wraps (not copies) another buffer, making it bounded waiting only up to a maximum amount of time.- Parameters:
buffer
- the buffer to wrap, must not be nullmaximumSize
- the maximum size, must be size one or greatertimeout
- the maximum amount of time to wait- Throws:
IllegalArgumentException
- if the buffer is nullIllegalArgumentException
- if the maximum size is zero or less
-
-
Method Details
-
decorate
Factory method to create a bounded buffer.When the buffer is full, it will immediately throw a
BufferOverflowException
on callingadd()
.- Parameters:
buffer
- the buffer to decorate, must not be nullmaximumSize
- the maximum size, must be size one or greater- Returns:
- a new bounded buffer
- Throws:
IllegalArgumentException
- if the buffer is nullIllegalArgumentException
- if the maximum size is zero or less
-
decorate
Factory method to create a bounded buffer that blocks for a maximum amount of time.- Parameters:
buffer
- the buffer to decorate, must not be nullmaximumSize
- the maximum size, must be size one or greatertimeout
- the maximum amount of time to wait in milliseconds- Returns:
- a new bounded buffer
- Throws:
IllegalArgumentException
- if the buffer is nullIllegalArgumentException
- if the maximum size is zero or less
-
remove
Description copied from interface:Buffer
Gets and removes the next object from the buffer.- Specified by:
remove
in interfaceBuffer
- Overrides:
remove
in classSynchronizedBuffer
- Returns:
- the next object in the buffer, which is also removed
-
add
- Specified by:
add
in interfaceCollection
- Overrides:
add
in classSynchronizedCollection
-
addAll
- Specified by:
addAll
in interfaceCollection
- Overrides:
addAll
in classSynchronizedCollection
-
iterator
Description copied from class:SynchronizedCollection
Iterators must be manually synchronized.synchronized (coll) { Iterator it = coll.iterator(); // do stuff with iterator }
- Specified by:
iterator
in interfaceCollection
- Specified by:
iterator
in interfaceIterable
- Overrides:
iterator
in classSynchronizedCollection
- Returns:
- an iterator that must be manually synchronized on the collection
-
isFull
public boolean isFull()Description copied from interface:BoundedCollection
Returns true if this collection is full and no new elements can be added.- Specified by:
isFull
in interfaceBoundedCollection
- Returns:
true
if the collection is full
-
maxSize
public int maxSize()Description copied from interface:BoundedCollection
Gets the maximum size of the collection (the bound).- Specified by:
maxSize
in interfaceBoundedCollection
- Returns:
- the maximum number of elements the collection can hold
-