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

Jav*_*ser 8 java multithreading

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

Boz*_*zho 12

你可以通过调用让线程中断 Thread.interrupt()

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

  • @JavaUser,从Java 1.5开始 (2认同)
  • @JavaUser - JDK 1.5之前的javadoc对于`destroy()`说*"(这个方法没有实现.)"*也存在"轻微问题".即使您尝试使用它也无法工作. (2认同)

Eya*_*der 6

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

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