gpt4 book ai didi

java - 停止 JAVA 中的递归函数(从线程内)

转载 作者:行者123 更新时间:2023-11-30 04:17:13 26 4
gpt4 key购买 nike

我认为这个问题过去已经被提出过几次,但这有点不同,我在任何地方都找不到合适的答案。
我有一个线程(在 run() 内部)调用另一个递归函数。这实际上是一个游戏引擎,递归函数是MiniMax。
问题是,当用户想要在计算过程中退出游戏,甚至撤消一步时,我应该如何停止这个功能?

我无法使用 boolean 值中断线程,因为如果已经调用了 Minimax,则程序位于此函数内部,并且线程将不会检查中断条件以终止,调用 interrupt() 也不起作用。

如何停止这样的功能?

最佳答案

调用 Thread.interrupt() 将会在从线程进程中调用的任何 wait() 或 sleep() 处抛出 InterruptedException,还要记住检查 isInterrupted() 为“不执行任何操作”。

当从 sleep /等待(或加入)抛出 InterrupedException 时,中断状态将被清除,并且调用 isInterruped() 将返回 false,因此请记住在异常之后中断 () 线程。

此外,使用 boolean Interrupted() 而不是 isInterrupted() 确实会清除中断状态,并且如果在调用之间没有再次中断,则对 Interrupted 进行双重检查可能会导致 true 后继为 false。

PS:还有一个建议,如果中断还不够,您可以有一个队列,您可以发送消息并从正在运行的线程中使用它,并解释该值以停止进程(请注意,它不是一个静态标志,它是队列或类似的东西)。

关于java - 停止 JAVA 中的递归函数(从线程内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18067873/

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