@InterfaceAudience.Private public abstract class ObjectPool<K,V> extends Object
| Modifier and Type | Class and Description | 
|---|---|
| static interface  | ObjectPool.ObjectFactory<K,V>An  ObjectFactoryobject is used to create
 new shared objects on demand. | 
| Modifier and Type | Field and Description | 
|---|---|
| static int | DEFAULT_CONCURRENCY_LEVELThe default concurrency level,
 used when not otherwise specified in a constructor. | 
| static int | DEFAULT_INITIAL_CAPACITYThe default initial capacity,
 used when not otherwise specified in a constructor. | 
| private ObjectPool.ObjectFactory<K,V> | objectFactory | 
| private Lock | purgeLockFor preventing parallel purge | 
| protected ConcurrentMap<K,Reference<V>> | referenceCacheDoes 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 theequalsmethod. | 
| 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–2021 The Apache Software Foundation. All rights reserved.