销毁java线程
帮我杀了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(); 我的问题是如何杀死这样的线程?您
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()
,使其始终完成。。因此调用线程。