雅加达的Commons-Pool对象安全吗?

时间:2011-05-25 17:42:54

标签: java apache-commons-pool

我正在使用Jakarta commons-pool-1.5.6.jar。我有2个不同的同类型对象池(例如:Car)。是一种防止将对象返回池的方法吗?

以下是一个示例:

//CarPool extends BaseObjectPool
CarPool carPoolA =  new CarPool(); 
CarPool carPoolB =  new CarPool();
carPoolB.returnObject(carPoolA.borrowObject());

我原以为这个池会管理它的内容并防止将外部对象返回给它?

有什么想法吗?我必须自己管理吗?

2 个答案:

答案 0 :(得分:1)

我认为默认实现没有任何符合您所描述的内容(通过浏览他们的API)。但您可以配置GenericObjectPool来实现目标,也可以将逻辑写入CarPool。所以我想最终我对你的问题的答案是肯定的,你必须自己管理。

答案 1 :(得分:0)

上面的答案对于1.x池是正确的。这些池不维护对已检出对象的内部引用,因此它们不能在返回时测试成员资格,或防止同一对象的多次返回。

版本2.x池检查以确保从它返回的池中借用了返回的对象。返回未从池中借用的对象或返回已返回的对象将导致2.x池中出现IllegalStateException。