Package org.codehaus.plexus.util
Class SweeperPool
- java.lang.Object
-
- org.codehaus.plexus.util.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 atsweepInterval
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 toprivate java.util.ArrayList<java.lang.Object>
pooledObjects
Holds the pooled objectsprivate boolean
shuttingDown
Flag indicating this pool is shuting downprivate SweeperPool.Sweeper
sweeper
Sweeps the pool periodically to trim it's sizeprivate 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 objectint
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 poolprivate int
saneConvert(int value)
void
trim()
Trim the pool down to min size
-
-
-
Field Detail
-
DEBUG
private static final boolean DEBUG
- See Also:
- Constant Field Values
-
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 totriggerSize
- 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 tominSize
.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 tominSize
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
-
-
-