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