Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
销毁java线程_Java_Multithreading - Fatal编程技术网

销毁java线程

销毁java线程,java,multithreading,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(); 我的问题是如何杀死这样的线程?您

帮我杀了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();
我的问题是如何杀死这样的线程?

您可以调用thread.stop(),但是您应该了解它的功能,因为它因某种原因被弃用(因为它可能使您的系统处于不一致的状态)。如果您正在做的工作是自包含的,并且表现良好,那么它不会成为问题

然而,如果它表现良好,你就不需要用这种方式阻止它,因此这个“解决方案”就是第22条军规。)

您可以调用Thread.stop(),但是您应该了解它的功能,因为它可能会使您的系统处于不一致的状态。如果您所做的工作是自包含的,并且表现良好,那么它不会成为问题


然而,如果它表现良好,你就不需要用这种方式阻止它,因此这个“解决方案”就是第22条军规。)

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

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


如果所有这些都失败了,System.exit()通常会起作用。

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

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


如果所有这些都失败了,System.exit()通常会起作用。

您可以在线程上调用interrupt()来停止它。

您可以在线程上调用interrupt()来停止它。

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

您可以使用thread.interrupt()停止线程

当run()方法终止时,线程将终止

在您的示例中,
newanyobject().process()将在将被终止


因此,终止process()方法将终止您的线程。

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

在您的示例中,
newanyobject().process()将在将被终止


因此,terminate process()方法将终止您的线程。

我不确定寻找杀死线程的方法是否是一种很好的方法。我可能建议的是实现
AnyObject().process()
,使其始终完成。。因此,调用线程。我不确定寻找杀死线程的方法是否是一种很好的方法。我可能建议的是实现
AnyObject().process()
,使其始终完成。。因此调用线程。