@InterfaceAudience.Private public abstract class ObjectPool<K,V> extends Object
| Modifier and Type | Class and Description | 
|---|---|
static interface  | 
ObjectPool.ObjectFactory<K,V>
An  
ObjectFactory object is used to create
 new shared objects on demand. | 
| Modifier and Type | Field and Description | 
|---|---|
static int | 
DEFAULT_CONCURRENCY_LEVEL
The default concurrency level,
 used when not otherwise specified in a constructor. 
 | 
static int | 
DEFAULT_INITIAL_CAPACITY
The default initial capacity,
 used when not otherwise specified in a constructor. 
 | 
private ObjectPool.ObjectFactory<K,V> | 
objectFactory  | 
private Lock | 
purgeLock
For preventing parallel purge 
 | 
protected ConcurrentMap<K,Reference<V>> | 
referenceCache
Does not permit null keys. 
 | 
protected ReferenceQueue<V> | 
staleRefQueue  | 
| Constructor and Description | 
|---|
ObjectPool(ObjectPool.ObjectFactory<K,V> objectFactory)
Creates a new pool with the default initial capacity (16)
 and the default concurrency level (16). 
 | 
ObjectPool(ObjectPool.ObjectFactory<K,V> objectFactory,
          int initialCapacity)
Creates a new pool with the given initial capacity
 and the default concurrency level (16). 
 | 
ObjectPool(ObjectPool.ObjectFactory<K,V> objectFactory,
          int initialCapacity,
          int concurrencyLevel)
Creates a new pool with the given initial capacity
 and the given concurrency level. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
abstract Reference<V> | 
createReference(K key,
               V obj)
Create a reference associated with the given object 
 | 
V | 
get(K key)
Returns a shared object associated with the given  
key,
 which is identified by the equals method. | 
abstract K | 
getReferenceKey(Reference<V> ref)
Get key of the given reference 
 | 
void | 
purge()
Removes stale references of shared objects from the pool. 
 | 
int | 
size()
Returns an estimated count of objects kept in the pool. 
 | 
protected final ReferenceQueue<V> staleRefQueue
private final ObjectPool.ObjectFactory<K,V> objectFactory
protected final ConcurrentMap<K,Reference<V>> referenceCache
public static final int DEFAULT_INITIAL_CAPACITY
public static final int DEFAULT_CONCURRENCY_LEVEL
public ObjectPool(ObjectPool.ObjectFactory<K,V> objectFactory)
objectFactory - the factory to supply new objects on demandNullPointerException - if objectFactory is nullpublic ObjectPool(ObjectPool.ObjectFactory<K,V> objectFactory, int initialCapacity)
objectFactory - the factory to supply new objects on demandinitialCapacity - the initial capacity to keep objects in the poolNullPointerException - if objectFactory is nullIllegalArgumentException - if initialCapacity is negativepublic ObjectPool(ObjectPool.ObjectFactory<K,V> objectFactory, int initialCapacity, int concurrencyLevel)
objectFactory - the factory to supply new objects on demandinitialCapacity - the initial capacity to keep objects in the poolconcurrencyLevel - the estimated count of concurrently accessing threadsNullPointerException - if objectFactory is nullIllegalArgumentException - if initialCapacity is negative or
    concurrencyLevel is non-positivepublic void purge()
ReferenceQueue, because
 ReferenceQueue.poll just checks a volatile instance variable in ReferenceQueue.public abstract Reference<V> createReference(K key, V obj)
key - the key to store in the referenceobj - the object to associate withpublic abstract K getReferenceKey(Reference<V> ref)
ref - The referencepublic V get(K key)
key,
 which is identified by the equals method.NullPointerException - if key is nullCopyright © 2007–2020 The Apache Software Foundation. All rights reserved.