中断Java线程中的外部方法调用



我的Java程序使用外部方法(我没有源代码)需要一段时间才能完成)。现在问题是如果用户要退出程序,我如何立即停止线程(不要等待方法结束)。

当我调用线程的中断方法时,什么都不会发生,在外部方法完成之前没有中断异常。我认为可能会发生中断的例外,并在外部方法运行的同时被捕获,但也许不运行?

我不确定线程如何准确地工作。那么您如何解决这个问题?

,如果没有检查线程的中断位或提供其他一些取消机制,那么您无法做很多事情来停止其他方法的进度。基本上,如果要中断,则需要与其他线程合作。

但是,您的程序将在所有非daemon线程完成后立即结束。因此,如果您不希望其他线程阻止退出的进度,那么您需要做的就是在start()线程之前调用thread.setDaemon(true)。然后,您的守护程序线程(包括main运行的线程)可以完成他们需要进行的任何清理工作,并且您的程序将退出而无需等待该守护程序线程完成。

编辑:此答案最初讨论了使用Future s,缺少OP的观点,即这是针对程序的特殊情况。如果您想阅读有关Futures。

的信息,请参阅此答案的历史记录。

最新更新