杀死悬挂的线程

时间:2012-01-02 13:46:43

标签: java multithreading

如何获取所有被挂起的线程并将其杀死?我正在开发一个Web应用程序,它启动一个名为TImer-0的线程,它在大多数时间都被挂起。当我终止apache服务器时,它显示了 严重:Web应用程序[/ LoggingMonitor]似乎已启动一个名为[Timer-0]的线程,但未能将其停止。这很可能会造成内存泄漏。

2 个答案:

答案 0 :(得分:2)

你真的不想暂停线程,因为这可能会阻止整个过程的运行。即使你确实有悬挂的线程,停止它们也不太可能有所帮助。

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

答案 1 :(得分:2)

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