我正在使用 Fork/Join 递归搜索问题的解决方案。
/——----1------\
/--1.1--\ /--1.2--\
1.1.1 1.1.2 1.2.1 1.2.2
现在假设我在 1.2.1 中找到了解决方案。有没有办法取消 forkjoin 池中的所有其他进程?
如果我知道 1.1 和 1.2 每个都包含一个潜在的解决方案怎么办 - 所以我只想取消我的 sibling (以及他们可能产生的任何子分支)?
我可以使用一些共享对象标志,但我希望 Fork/Join 有一个更干净的方法来杀死分支或 sibling 。
最佳答案
没有。一旦开始,它就会完成或出现错误/异常。
您必须自己编写取消程序。也就是说,将一个 volatile boolean 值传递给每个任务,准备就绪后将 boolean 值设置为真(取消)。每个任务都可以测试 boolean 值是否为真并立即停止。
关于java - Fork/Join 杀死 sibling /分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22674546/