杀死暂停的线程

问题描述:

如何获取所有暂停的线程并杀死它们?我正在开发一个启动名为TImer-0的线程的Web应用程序,该线程被暂停了大部分时间。当我终止Apache服务器时,它显示出 SEVERE:Web应用程序[/ LoggingMonitor]似乎启动了一个名为[定时器0]但无法停止它。这很可能造成内存泄漏。杀死暂停的线程

+0

它是否以Thread.suspend挂起?或者你的意思是它通常没有做任何活动? – Tudor 2012-01-02 13:51:26

+0

这是跟进:http://*.com/questions/8677008/catalina-out-memory-leak-error – oers 2012-01-02 13:54:13

+1

让容器管理线程。从长远来看,它会为你节省很多痛苦。 – 2012-01-02 13:59:04

你真的不想挂起线程,因为这可能会停止整个过程的工作。即使你有暂停的线程,停止它们也不可能有帮助。

Timer-n听起来像java.util.Timer。这可以通过拨打cancel来清除。只要你没有内存泄漏,线程应该最终被收集(取消finalizer)。

+0

我没有暂停线程。当我调试应用程序时,它显示所有其他线程正在运行,但计时器o线程被暂停大部分时间 – Rookie 2012-01-02 14:02:25

+0

我使用timer.cancel()在onContextDestroyed的servlets中,可以吗? – Rookie 2012-01-02 14:03:41

您不应该杀死线程,而是释放它使用的资源(内存被排除,因为它被gc释放),并让调度程序停止它。 Thread.stop已被弃用(就像暂停)。
如果必须手动停止线程,请使用标记herehere in the answers