我正在使用Jakarta commons-pool-1.5.6.jar。我有2个不同的同类型对象池(例如:Car)。是一种防止将对象返回池的方法吗?
以下是一个示例:
//CarPool extends BaseObjectPool
CarPool carPoolA = new CarPool();
CarPool carPoolB = new CarPool();
carPoolB.returnObject(carPoolA.borrowObject());
我原以为这个池会管理它的内容并防止将外部对象返回给它?
有什么想法吗?我必须自己管理吗?
答案 0 :(得分:1)
我认为默认实现没有任何符合您所描述的内容(通过浏览他们的API)。但您可以配置GenericObjectPool来实现目标,也可以将逻辑写入CarPool。所以我想最终我对你的问题的答案是肯定的,你必须自己管理。
答案 1 :(得分:0)
上面的答案对于1.x池是正确的。这些池不维护对已检出对象的内部引用,因此它们不能在返回时测试成员资格,或防止同一对象的多次返回。
版本2.x池检查以确保从它返回的池中借用了返回的对象。返回未从池中借用的对象或返回已返回的对象将导致2.x池中出现IllegalStateException。