不再引用的java线程池是否需要执行shutdown?jvm会自动释放线程资源吗?
答案 0 :(得分:1)
请参阅doc:
程序中不再引用的池并且没有剩余 线程将自动关闭。
但是,默认情况下,池中的线程不会自动终止,它们会等待新任务。所以资源不会被释放。
如果您想确保 即使用户忘记呼叫,也会回收未引用的池 shutdown(),然后你必须安排未使用的线程最终死掉, 通过设置适当的保持活动时间,使用零下限 核心线程和/或设置allowCoreThreadTimeOut(boolean)。
在我的个人experience中,我遇到OutOfMemory
错误,因为没有致电shutdown
或allowCoreThreadTimeOut
。