public class

BlockingBuffer

extends SynchronizedBuffer
java.lang.Object
   ↳ org.apache.commons.collections.collection.SynchronizedCollection
     ↳ org.apache.commons.collections.buffer.SynchronizedBuffer
       ↳ org.apache.commons.collections.buffer.BlockingBuffer

Class Overview

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.

Summary

[Expand]
Inherited Fields
From class org.apache.commons.collections.collection.SynchronizedCollection
Protected Constructors
BlockingBuffer(Buffer buffer)
Constructor that wraps (not copies).
BlockingBuffer(Buffer buffer, long timeoutMillis)
Constructor that wraps (not copies).
Public Methods
boolean add(Object o)
boolean addAll(Collection c)
static Buffer decorate(Buffer buffer, long timeoutMillis)
Factory method to create a blocking buffer with a timeout value.
static Buffer decorate(Buffer buffer)
Factory method to create a blocking buffer.
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 get()
Gets the next value from the buffer, waiting until an object is added 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.
[Expand]
Inherited Methods
From class org.apache.commons.collections.buffer.SynchronizedBuffer
From class org.apache.commons.collections.collection.SynchronizedCollection
From class java.lang.Object
From interface java.lang.Iterable
From interface java.util.Collection
From interface org.apache.commons.collections.Buffer

Protected Constructors

protected BlockingBuffer (Buffer buffer)

Constructor that wraps (not copies).

Parameters
buffer the buffer to decorate, must not be null
Throws
IllegalArgumentException if the buffer is null

protected BlockingBuffer (Buffer buffer, long timeoutMillis)

Constructor that wraps (not copies).

Parameters
buffer the buffer to decorate, must not be null
timeoutMillis the timeout value in milliseconds, zero or less for no timeout
Throws
IllegalArgumentException if the buffer is null

Public Methods

public boolean add (Object o)

public boolean addAll (Collection c)

public static Buffer decorate (Buffer buffer, long timeoutMillis)

Factory method to create a blocking buffer with a timeout value.

Parameters
buffer the buffer to decorate, must not be null
timeoutMillis the timeout value in milliseconds, zero or less for no timeout
Returns
  • a new blocking buffer
Throws
IllegalArgumentException if the buffer is null

public static Buffer decorate (Buffer buffer)

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

public 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.

Parameters
timeout the timeout value in milliseconds
Throws
BufferUnderflowException if an interrupt is received
BufferUnderflowException if the timeout expires

public Object 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.

Returns
  • the next object in the buffer, which is not removed
Throws
BufferUnderflowException if an interrupt is received

public Object 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.

Returns
  • the next object in the buffer, which is also removed
Throws
BufferUnderflowException if an interrupt is received

public 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.

Parameters
timeout the timeout value in milliseconds
Throws
BufferUnderflowException if an interrupt is received
BufferUnderflowException if the timeout expires