Class SweeperPool


  • public class SweeperPool
    extends java.lang.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.
    Version:
    $Id$
    • Nested Class Summary

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

      Fields 
      Modifier and Type Field Description
      private static boolean DEBUG  
      private int maxSize
      Absolute maximum size of the pool.
      private int minSize
      The size the pool gets trimmed down to
      private java.util.ArrayList<java.lang.Object> pooledObjects
      Holds the pooled objects
      private boolean shuttingDown
      Flag indicating this pool is shuting down
      private SweeperPool.Sweeper sweeper
      Sweeps the pool periodically to trim it's size
      private int triggerSize
      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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void dispose()
      Dispose of this pool.
      java.lang.Object get()
      Return the pooled object
      int getSize()
      Return the number of pooled objects.
      (package private) boolean isDisposed()
      A pool has been disposed if has been shutdown and the sweeper has completed running.
      void objectAdded​(java.lang.Object obj)
      Override this to be notified of object addition.
      void objectDisposed​(java.lang.Object obj)
      Override this to be notified of object disposal.
      void objectRetrieved​(java.lang.Object obj)
      Override this to be notified of object retrieval.
      boolean put​(java.lang.Object obj)
      Add an object to the pool
      private int saneConvert​(int value)  
      void trim()
      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 Detail

      • 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 java.util.ArrayList<java.lang.Object> pooledObjects
        Holds the pooled objects
      • shuttingDown

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

      • 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.
        • minSize - this is the size the pool is trimmed to
        • 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.
        • 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.
        • sweepInterval - how often the sweeper runs. Is actually the time since the sweeper last finished a pass. 0 if the sweeper should not run.

        Any value less than 0 is automatically converted to 0

    • Method Detail

      • saneConvert

        private int saneConvert​(int value)
      • get

        public java.lang.Object get()
        Return the pooled object
      • put

        public boolean put​(java.lang.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​(java.lang.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 -
      • objectAdded

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

        public void objectRetrieved​(java.lang.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 -