Class BoundedBuffer

  • All Implemented Interfaces:
    Serializable, Iterable, Collection, BoundedCollection, Buffer

    public class BoundedBuffer
    extends SynchronizedBuffer
    implements BoundedCollection
    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:
    Serialized Form
    • Constructor Detail

      • BoundedBuffer

        protected 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.
        Parameters:
        buffer - the buffer to wrap, must not be null
        maximumSize - the maximum size, must be size one or greater
        timeout - the maximum amount of time to wait
        Throws:
        IllegalArgumentException - if the buffer is null
        IllegalArgumentException - if the maximum size is zero or less
    • Method Detail

      • decorate

        public static BoundedBuffer decorate​(Buffer buffer,
                                             int maximumSize)
        Factory method to create a bounded buffer.

        When the buffer is full, it will immediately throw a BufferOverflowException on calling add().

        Parameters:
        buffer - the buffer to decorate, must not be null
        maximumSize - the maximum size, must be size one or greater
        Returns:
        a new bounded buffer
        Throws:
        IllegalArgumentException - if the buffer is null
        IllegalArgumentException - if the maximum size is zero or less
      • decorate

        public static BoundedBuffer decorate​(Buffer buffer,
                                             int maximumSize,
                                             long timeout)
        Factory method to create a bounded buffer that blocks for a maximum amount of time.
        Parameters:
        buffer - the buffer to decorate, must not be null
        maximumSize - the maximum size, must be size one or greater
        timeout - the maximum amount of time to wait in milliseconds
        Returns:
        a new bounded buffer
        Throws:
        IllegalArgumentException - if the buffer is null
        IllegalArgumentException - if the maximum size is zero or less
      • remove

        public Object remove()
        Description copied from interface: Buffer
        Gets and removes the next object from the buffer.
        Specified by:
        remove in interface Buffer
        Overrides:
        remove in class SynchronizedBuffer
        Returns:
        the next object in the buffer, which is also removed
      • 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 interface BoundedCollection
        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 interface BoundedCollection
        Returns:
        the maximum number of elements the collection can hold