2011-08-30 83 views
1

帮我杀Java线程 所以我有代码:破坏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

我不确定是否想找到杀死线程的方法是一种很好的方法。我可能会建议的是以总是完成的方式实现AnyObject().process()',并因此调用线程。 –

回答

3

你可以调用Thread.stop(),但是你应该明白它的作用,因为它的原因(因为它可以让你的系统处于不一致的状态)如果你正在做的工作是自包含的并且行为良好,这不会是一个问题。

但是如果它很乖的,你就不需要这种方式阻止它,从而赶超22本“解决方案”;)

1

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

您应该保留对AnyObject的引用,以备日后需要时参考。

如果所有失败,System.exit()通常会做的伎俩。

0

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

0

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

0

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

在你的例子中,当new AnyObject().process();将被终止。

所以,终止process()方法会终止你的Thread。