Commons Pooling:如何实例化混凝土池?

IAm*_*aja 1 java apache pooling apache-commons-pool

我已经将commons-pooling-1.6.jar添加到我的类路径并尝试实例化a StackObjectPool并且每次都失败了:

// Deprecated.
ObjectPool<T> oPool = new StackObjectPool<T>();

// Error: Cannot instantiate the type BasePoolableObjectFactory<T>.
PoolableObjectFactory<T> oFact = new BasePoolableObjectFactory<T>();
ObjectPool<T> oPool = new StackObjectPool<T>(oFact);
Run Code Online (Sandbox Code Playgroud)

这是一个弃用的API吗?如果是这样,Commons Pooling的一些开源替代品是什么?否则,我如何实例化StackObjectPool

Hak*_*rce 5

您需要编写自己的Factory,可能会扩展BasePoolableObjectFactory.有关更多信息,请参见此处:http://commons.apache.org/pool/examples.html

下面是一个PoolableObjectFactory实现,它创建了StringBuffers:

import org.apache.commons.pool.BasePoolableObjectFactory; 

public class StringBufferFactory extends BasePoolableObjectFactory<StringBuffer> { 
    // for makeObject we'll simply return a new buffer 
    public StringBuffer makeObject() { 
        return new StringBuffer(); 
    } 

    // when an object is returned to the pool,  
    // we'll clear it out 
    public void passivateObject(StringBuffer buf) { 
        buf.setLength(0); 
    } 

    // for all other methods, the no-op  
    // implementation in BasePoolableObjectFactory 
    // will suffice 
}
Run Code Online (Sandbox Code Playgroud)

然后使用如下:

new StackObjectPool<StringBuffer>(new StringBufferFactory())
Run Code Online (Sandbox Code Playgroud)