3
我有一個定義爲bean的彈簧CommonsPoolTargetSource
。我試圖瞭解如何合併工作,以及何時將對象返回池中。Spring ObjectPooling&線程阻塞
特別是,如果我有一個工人,這需要一個池對象,並調用它的兩種方法,如下所示:
public class MyWorker {
@Resource
Foo pooledFoo;
void doWork()
{
pooledFoo.doStepA();
pooledFoo.doStepB();
}
}
從我可以在我運行測試看,pooledFoo
不實際上是一個Foo
的實例,但是由池提供的代理。在流量以上將是:
- 調用doStepA()上
foo
從池中檢索一個值(阻塞線程,如果一個是不可用的), - doStepA是在pooledFoo
- 當被執行doStepA完成,
pooledFoo
實例返回到池中 - 控制返回到
doWork
方法,並且該方法繼續
如果這是正確的(PL輕鬆地告訴我,如果它不是),是否公平地假設被調用時從池中返回pooledFoo
,將不會是doStepA()
返回的同一個實例?
謝謝 - 非常明確的答案。 – 2010-11-06 16:57:48