我有一个为豆定义的Spring CommonsPoolTargetSource.我试图了解池的工作方式,以及当对象返回时池.
具体来说,如果我有一个工作程序,它需要一个池化对象并对其调用两个方法,如下所示:
public class MyWorker {
@Resource
Foo pooledFoo;
void doWork()
{
pooledFoo.doStepA();
pooledFoo.doStepB();
}
}
从我运行的测试中可以看到,pooledFoo实际上不是Foo的实例,而是Pool提供的代理.上面的流程将是:
>在foo上调用doStepA()会从池中检索一个值(如果一个线程不可用,则将其阻塞),
> doStepA在pooledFoo上执行
>当doStepA完成时,pooledFoo实例将返回到池中
>控件返回到doWork方法,该方法继续
如果这是正确的(请告诉我是否正确),可以假设在调用doStepB()时从池返回的pooledFoo是否与为doStepA()返回的实例不同?
最佳答案