gpt4 book ai didi

java - 使用 Apache Commons Pool 2 在池中添加对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:43 29 4
gpt4 key购买 nike

我想用 Apache Commons Pool 2 创建一个对象 P 池。我用变量和方法创建了一个 P 对象。

我像这样创建一个 PPool:

public class PPool extends GenericObjectPool<P>{

/**
* Constructor.
*
* It uses the default configuration for pool provided by
* apache-commons-pool2.
*
* @param factory
*/
public PPool(PooledObjectFactory<P> factory) {
super(factory);
}

/**
*
*
* @param factory
* @param config
*/
public PPool(PooledObjectFactory<P> factory,
GenericObjectPoolConfig config) {
super(factory, config);
}
}

然后我创建一个 PFactory:

public class PhantomJsFactory extends BasePooledObjectFactory<Phantom> {

@Override
public P create() throws Exception {
// TODO Auto-generated method stub
return new P();
}

@Override
public PooledObject<P> wrap(P phantomjs) {
// TODO Auto-generated method stub
return new DefaultPooledObject<P>(phantomjs);
}

}

现在,如果我想添加 10 个 P 对象的实例,我该怎么做?我试试这个:

        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setMaxIdle(1);
config.setMaxTotal(10);


config.setTestOnBorrow(true);
config.setTestOnReturn(true);
pool = new PPool(new PFactory(), config);

但是现在呢?

最佳答案

您不需要添加实例。您提供 P 类的工厂。所以 Pool 将管理对象的生命周期。如果您获得对象,它将在需要时由池创建。所以借物使用即可。

P pObject = pool.borrowObject();

查看说明 GenericObjectPool.html#borrowObject()

请看一些测试用例:TestGenericObjectPool.java

关于java - 使用 Apache Commons Pool 2 在池中添加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26882863/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com