gpt4 book ai didi

java - 中断java线程中的外部方法调用

转载 作者:行者123 更新时间:2023-12-01 23:15:31 27 4
gpt4 key购买 nike

我的java程序使用一个外部方法(我没有源代码),需要一段时间才能完成,所以我在Thread类中调用了该方法(在它的run方法中)。现在的问题是,如果用户想退出程序,如何立即停止线程(而不是等待方法结束)。

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

我不确定线程​​到底是如何工作的。那么如何解决这个问题呢?

最佳答案

如果其他方法不检查线程的中断位或提供其他取消机制,那么您无法做太多事情来停止该方法的进度。基本上,一个线程(即在其上运行的方法)如果要被中断,就需要与其他线程合作。

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

编辑:这个答案最初讨论了使用Futures,忽略了OP的观点,即这是针对程序退出的特殊情况。如果您想了解 future ,请参阅此答案的历史记录。

关于java - 中断java线程中的外部方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21270196/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com