public interface ObjectPool<K,V>
borrowObject, returnObject and removeObject.
Example of use:
Object obj = null;
try {
obj = pool.borrowObject(key, timeout);
try {
//...use the object...
} catch(Exception e) {
// invalidate the object
try {
pool.removeObject(key, obj);
} catch(Exception ignore) {
}
// do not return the object to the pool twice
obj = null;
} finally {
// make sure the object is returned to the pool
if(obj != null) {
try {
pool.returnObject(key, obj);
} catch(Exception ignore) {
}
}
}
} catch(Exception e) {
// failed to borrow an object(pool exhausted, no valid object, interrupted or etc...)
}
| Modifier and Type | Method and Description |
|---|---|
V |
borrowObject(K key,
long timeoutInMillis)
Obtains an instance from this pool
Instances returned from this method will have been either newly created with
createObject or will be a previously idle object and
then validated with validateObject. |
void |
createAllMinObjects(K key)
Create objects using the
factory until pool's minimum size, and then place them in the idle object pool
createAllMinObjects is useful for "pre-loading" a pool with idle objects. |
void |
destroy()
Destroy this pool, and free any resources associated with it
Calling other methods such as
createAllMinObjects or borrowObject,
returnObject or removeObject or removeAllObjects after invoking
this method on a pool will cause them to throw an IllegalStateException. |
int |
getActiveCount(K key)
Returns the number of instances currently borrowed from but not yet returned to the pool
|
int |
getIdleCount(K key)
Returns the number of instances currently idle in this pool
|
int |
getPeakCount(K key)
Returns the total peak number of instances
|
int |
getPoolSize(K key)
Returns the total number of instances
|
void |
removeAllObjects(K key)
Clears the specified pool, removing all pooled instances corresponding to the given
key |
void |
removeObject(K key,
V value)
Removes(invalidates) an object from the pool
By contract,
value should have been obtained
using borrowObject using a key that is equivalent to the one used to
borrow the instance in the first place. |
void |
returnObject(K key,
V value)
Return an instance to the pool
By contract,
value should have been obtained
using borrowObject using a key that is equivalent to the one used to
borrow the instance in the first place. |
void createAllMinObjects(K key) throws Exception
factory until pool's minimum size, and then place them in the idle object pool
createAllMinObjects is useful for "pre-loading" a pool with idle objects.key - the key new instances should be added toException - if an unexpected exception occurredV borrowObject(K key, long timeoutInMillis) throws PoolExhaustedException, NoValidObjectException, InterruptedException
createObject or will be a previously idle object and
then validated with validateObject.
By contract, clients should return the borrowed instance using
returnObject, removeObject
When the pool has been exhausted, a PoolExhaustedException will be thrown.key - the key used to obtain the objecttimeoutInMillis - the max time(milli-second) for borrowing the object. If the pool cannot return an instance in given time,
PoolExhaustedException will be thrown.PoolExhaustedException - when the pool is exhaustedNoValidObjectException - when the pool cannot or will not return another instanceInterruptedException - when the pool is interruptedvoid returnObject(K key, V value) throws Exception
value should have been obtained
using borrowObject using a key that is equivalent to the one used to
borrow the instance in the first place.void removeObject(K key, V value) throws Exception
value should have been obtained
using borrowObject using a key that is equivalent to the one used to
borrow the instance in the first place.
This method should be used when an object that has been borrowed
is determined (due to an exception or other problem) to be invalid.void removeAllObjects(K key) throws Exception
keykey - the key to clearException - if an unexpected exception occurredvoid destroy()
createAllMinObjects or borrowObject,
returnObject or removeObject or removeAllObjects after invoking
this method on a pool will cause them to throw an IllegalStateException.
int getPoolSize(K key)
key - the key to querykey currently idle and active in this pool or a negative value if unsupportedint getPeakCount(K key)
key - the key to querykey or a negative value if unsupportedint getActiveCount(K key)
key - the key to querykey currently borrowed in this pool or a negative value if unsupportedint getIdleCount(K key)
key - the key to querykey currently idle in this pool or a negative value if unsupportedCopyright © 2021. All rights reserved.