ThreadPoolExecutor在线程死亡时清理

时间:2013-05-08 14:08:12

标签: java resources hornetq threadpoolexecutor resource-cleanup

我有ThreadPoolExecutor运行一些核心和一定的最大线程数。 运行的任务为每个线程创建HornetQ(独立)连接,并在线程运行时使它们保持活动状态。但是,当线程keepAliveTime到期并且线程死亡时,我们无法关闭它们。有没有办法在线程死之前清理资源?

其中一种方法是使用HornetQ连接的池化解决方案。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

如果您使用的是JDK 1.7,则可以在可关闭的界面上嵌入内容,并且只要超出范围就会关闭它。我们正在努力在JMS 2上实现它,但同时你可以嵌入你自己的类委托的东西。你必须在你的线程中的某处保留引用的东西,这样当线程消失时它只会超出范围。 (本地线程可能?)

你需要使用try(statement = statement.open()){}并且会调用auto closeable