org.apache.commons.collections.buffer

Class BlockingBuffer

public class BlockingBuffer extends SynchronizedBuffer

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: 348808 $ $Date: 2005-11-24 21:35:09 +0000 (Thu, 24 Nov 2005) $

Author: Stephen Colebourne Janek Bogucki Phil Steitz James Carman

Constructor Summary
protected BlockingBuffer(Buffer buffer)
Constructor that wraps (not copies).
protected BlockingBuffer(Buffer buffer, long timeoutMillis)
Constructor that wraps (not copies).
Method Summary
booleanadd(Object o)
booleanaddAll(Collection c)
static Bufferdecorate(Buffer buffer)
Factory method to create a blocking buffer.
static Bufferdecorate(Buffer buffer, long timeoutMillis)
Factory method to create a blocking buffer with a timeout value.
Objectget()
Gets the next value from the buffer, waiting until an object is added if the buffer is empty.
Objectget(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.
Objectremove()
Removes the next value from the buffer, waiting until an object is added if the buffer is empty.
Objectremove(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.

Constructor Detail

BlockingBuffer

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

BlockingBuffer

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

Since: Commons Collections 3.2

Method Detail

add

public boolean add(Object o)

addAll

public boolean addAll(Collection c)

decorate

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

decorate

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

Since: Commons Collections 3.2

get

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.

Throws: BufferUnderflowException if an interrupt is received

get

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

Since: Commons Collections 3.2

remove

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.

Throws: BufferUnderflowException if an interrupt is received

remove

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

Since: Commons Collections 3.2

Copyright © 2001-2008 Apache Software Foundation. All Rights Reserved.