Class SweeperPool

java.lang.Object
org.codehaus.plexus.util.SweeperPool

public class SweeperPool extends Object
Pools a bunch of objects . Runs a sweeper periodically to keep it down to size. The objects in the pool first get disposed first.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    private static class 
    Periodically at sweepInterval goes through and tests if the pool should be trimmed.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final boolean
     
    private int
    Absolute maximum size of the pool.
    private int
    The size the pool gets trimmed down to
    private ArrayList<Object>
    Holds the pooled objects
    private boolean
    Flag indicating this pool is shuting down
    Sweeps the pool periodically to trim it's size
    private int
    When the sweeper runs and the pool is over this size, then the pool is trimmed
  • Constructor Summary

    Constructors
    Constructor
    Description
    SweeperPool(int maxSize, int minSize, int intialCapacity, int sweepInterval, int triggerSize)
    There are a number of settings to control how the pool operates.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Dispose of this pool.
    get()
    Return the pooled object
    int
    Return the number of pooled objects.
    (package private) boolean
    A pool has been disposed if has been shutdown and the sweeper has completed running.
    void
    Override this to be notified of object addition.
    void
    Override this to be notified of object disposal.
    void
    Override this to be notified of object retrieval.
    boolean
    put(Object obj)
    Add an object to the pool
    private int
    saneConvert(int value)
     
    void
    Trim the pool down to min size

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DEBUG

      private static final boolean DEBUG
      See Also:
    • sweeper

      private transient SweeperPool.Sweeper sweeper
      Sweeps the pool periodically to trim it's size
    • maxSize

      private transient int maxSize
      Absolute maximum size of the pool.
    • minSize

      private transient int minSize
      The size the pool gets trimmed down to
    • triggerSize

      private int triggerSize
      When the sweeper runs and the pool is over this size, then the pool is trimmed
    • pooledObjects

      private ArrayList<Object> pooledObjects
      Holds the pooled objects
    • shuttingDown

      private boolean shuttingDown
      Flag indicating this pool is shuting down
  • Constructor Details

    • SweeperPool

      public SweeperPool(int maxSize, int minSize, int intialCapacity, int sweepInterval, int triggerSize)
      There are a number of settings to control how the pool operates.
      Parameters:
      maxSize - if the pool has reached this size, any objects added are immediately disposed. If the pool is this size when the sweeper runs, then the pool is also trimmed to minSize irrespective of the triggerSize.
      minSize - - this is the size the pool is trimmed to
      intialCapacity - the intial capacity

      Any value less than 0 is automatically converted to 0

      sweepInterval - how often the sweeper runs. Is actually the time since the sweeper last finished a pass. 0 if the sweeper should not run.
      triggerSize - - this determines if the pool is trimmed when the sweeper runs. If the pool size is greater or equal than this value then the pool is trimmed to minSize.
  • Method Details

    • saneConvert

      private int saneConvert(int value)
    • get

      public Object get()
      Return the pooled object
      Returns:
      first available object from the pool
    • put

      public boolean put(Object obj)
      Add an object to the pool
      Parameters:
      obj - the object to pool. Can be null.
      Returns:
      true if the object was added to the pool, false if it was disposed or null
    • getSize

      public int getSize()
      Return the number of pooled objects. This is never greater than t maximum size of the pool
      Returns:
      the number of pooled objects
    • dispose

      public void dispose()
      Dispose of this pool. Stops the sweeper and disposes each object in the pool
    • isDisposed

      boolean isDisposed()
      A pool has been disposed if has been shutdown and the sweeper has completed running.
      Returns:
      true if the pool has been disposed, false otherwise
    • trim

      public void trim()
      Trim the pool down to min size
    • objectDisposed

      public void objectDisposed(Object obj)
      Override this to be notified of object disposal. Called after the object has been removed. Occurs when the pool is trimmed.
      Parameters:
      obj - the Object
    • objectAdded

      public void objectAdded(Object obj)
      Override this to be notified of object addition. Called before object is to be added.
      Parameters:
      obj - the Object
    • objectRetrieved

      public void objectRetrieved(Object obj)
      Override this to be notified of object retrieval. Called after object removed from the pool, but before returned to the client.
      Parameters:
      obj - the Object