Package rx.internal.util
Class ObjectPool<T>
- java.lang.Object
-
- rx.internal.util.ObjectPool<T>
-
- All Implemented Interfaces:
SchedulerLifecycle
public abstract class ObjectPool<T> extends java.lang.Object implements SchedulerLifecycle
-
-
Field Summary
Fields Modifier and Type Field Description (package private) intmaxSize(package private) intminSizeprivate java.util.concurrent.atomic.AtomicReference<java.util.concurrent.Future<?>>periodicTask(package private) java.util.Queue<T>poolprivate longvalidationInterval
-
Constructor Summary
Constructors Modifier Constructor Description ObjectPool()privateObjectPool(int min, int max, long validationInterval)Creates the pool.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description TborrowObject()Gets the next free object from the pool.protected abstract TcreateObject()Creates a new object.private voidinitialize(int min)voidreturnObject(T object)Returns object back to the pool.voidshutdown()Shutdown this pool.voidstart()Allows the Scheduler instance to start threads and accept tasks on them.
-
-
-
Field Detail
-
pool
java.util.Queue<T> pool
-
minSize
final int minSize
-
maxSize
final int maxSize
-
validationInterval
private final long validationInterval
-
periodicTask
private final java.util.concurrent.atomic.AtomicReference<java.util.concurrent.Future<?>> periodicTask
-
-
Constructor Detail
-
ObjectPool
public ObjectPool()
-
ObjectPool
private ObjectPool(int min, int max, long validationInterval)Creates the pool.- Parameters:
minIdle- minimum number of objects residing in the poolmaxIdle- maximum number of objects residing in the poolvalidationInterval- time in seconds for periodical checking of minIdle / maxIdle conditions in a separate thread. When the number of objects is less than minIdle, missing instances will be created. When the number of objects is greater than maxIdle, too many instances will be removed.
-
-
Method Detail
-
borrowObject
public T borrowObject()
Gets the next free object from the pool. If the pool doesn't contain any objects, a new object will be created and given to the caller of this method back.- Returns:
- T borrowed object
-
returnObject
public void returnObject(T object)
Returns object back to the pool.- Parameters:
object- object to be returned
-
shutdown
public void shutdown()
Shutdown this pool.- Specified by:
shutdownin interfaceSchedulerLifecycle
-
start
public void start()
Description copied from interface:SchedulerLifecycleAllows the Scheduler instance to start threads and accept tasks on them.Implementations should make sure the call is idempotent and threadsafe.
- Specified by:
startin interfaceSchedulerLifecycle
-
createObject
protected abstract T createObject()
Creates a new object.- Returns:
- T new object
-
initialize
private void initialize(int min)
-
-