在java中杀死正在运行的线程?

时间:2010-06-28 07:30:23

标签: java multithreading

如何在java中杀死正在运行的线程

3 个答案:

答案 0 :(得分:12)

您可以通过调用Thread.interrupt()

让线程中断

请注意,存在一些具有相似语义的其他方法 - stop()destroy() - 但它们已被弃用,因为它们是unsafe。不要试图使用它们。

答案 1 :(得分:6)

正如Bozho所说,Thread.interrupt()是执行它的通用和正确方法。但请记住,它需要线程合作;实现忽略中断请求的线程非常容易。

为了使一段代码可以这种方式中断,它不应该忽略任何InterruptedException,它应该检查每次循环迭代的中断标志(使用Thread.currentThread()。isInterrupted())。此外,它不应该有任何不可中断的阻塞操作。如果存在这样的操作(例如,在套接字上等待),那么您将需要更具体的中断实现(例如关闭套接字)。

答案 2 :(得分:2)

您需要Thread.interrupt()

有关详情,请参阅本文Why Are Thread.stop, Thread.suspend,Thread.resume and Runtime.runFinalizersOnExit Deprecated?中的How do I stop a thread that waits for long periods (e.g., for input)部分。