是否强制将对象放回池中?

时间:2013-11-19 11:52:00

标签: java apache java-7 object-pooling

我正在使用Apache的GenericObjectPool创建我班级的对象池。

我有网络应用程序。处理完请求后,我将对象放回池中,没有任何问题。在代码中,我将对象保留在finally块中的池中。

我的问题是,在我的JUnit测试用例中,我也从池中获取对象并使用它。我的测试用例执行完成后,是否真的需要将对象保留回池中?

@Test
public void testMethod(){

  try{
     //some code after getting the object from the pool
  }catch(Exception e){

   }finally{

    //call the logic to put the object back to the pool here
   }
}

是否真的需要在上面的finally块中提到的测试用例中将对象保留回客户端?

2 个答案:

答案 0 :(得分:0)

您是否真的需要取决于对象的类型。例如,如果存在数据库连接池,那么除非将它们返回池中,否则将很快耗尽。无法返回其他类型的对象可能会快速消耗测试程序可用的所有内存。一般来说,答案是肯定的,你需要。在某些情况下,如果没有这样做可能会有所收获,但即使在这种情况下,我也会认为这种风格很糟糕。

答案 1 :(得分:0)

是的,你必须这样做是因为以下原因:

  • 如果您有大量测试用例 - 最终您的池将为空并且测试开始崩溃
  • 您的测试用例可能是API用户的指南 - 他们可能会与此类代码混淆
  • 这是最佳做法,应该自动完成