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

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

您可以通过调用Thread.interrupt()来请求线程中断

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

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

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

很快你需要Thread.interrupt()

有关更多详细信息,请参阅本文中的“ How do I stop a thread that waits for long periods (eg, for input) ”部分为什么Thread.stopThread.suspendThread.resumeRuntime.runFinalizersOnExit已弃用? 。