破坏java线程

时间:2011-08-30 07:19:14

标签: java multithreading

帮我杀死java线程 所以我有代码:

new Thread(new Runnable() {
  public void run() {
    // process() method is time-consuming and has no while-loop in his body
    // so I want to give user to stop it
    new AnyObject().process();
  }
}).start();

我的问题是如何杀死这样的线程?

5 个答案:

答案 0 :(得分:3)

你可以调用Thread.stop()但是你应该理解它的作用因为它被弃用了(因为它可能使你的系统处于不一致状态)如果你正在做的工作是自包含的并且表现良好,这不会是个问题。

然而,如果表现良好,你就不需要以这种方式阻止它,因此捕获22与这个“解决方案”;)

答案 1 :(得分:1)

最终,停止线程的唯一安全方法是让它退出运行循环。有两种主要方法,设置一个标志,AnyObject.process方法定期检查或让AnyObject.process方法正确响应中断并退出。但是要使用后一种方法,您需要保留对该线程的引用,以便您可以在其上发出中断方法。

您可能应该保留对AnyObject的引用,以防您以后需要引用它。

如果全部失败,System.exit()通常会做到这一点。

答案 2 :(得分:0)

你可以在线程上调用interrupt()来阻止它。

答案 3 :(得分:0)

你可以使用thread.interrupt()来停止线程!

答案 4 :(得分:0)

当run()方法终止时,您的线程将被终止。

在您的示例中,将会终止new AnyObject().process();

因此,终止process()方法将终止你的Thread。