如何在java中杀死正在运行的线程
答案 0 :(得分:12)
您可以通过调用Thread.interrupt()
请注意,存在一些具有相似语义的其他方法 - stop()
和destroy()
- 但它们已被弃用,因为它们是unsafe。不要试图使用它们。
答案 1 :(得分:6)
正如Bozho所说,Thread.interrupt()是执行它的通用和正确方法。但请记住,它需要线程合作;实现忽略中断请求的线程非常容易。
为了使一段代码可以这种方式中断,它不应该忽略任何InterruptedException,它应该检查每次循环迭代的中断标志(使用Thread.currentThread()。isInterrupted())。此外,它不应该有任何不可中断的阻塞操作。如果存在这样的操作(例如,在套接字上等待),那么您将需要更具体的中断实现(例如关闭套接字)。
答案 2 :(得分:2)
有关详情,请参阅本文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)
部分。