gpt4 book ai didi

java - invokeAll 可以在 RecursiveTask 中使用吗?

转载 作者:行者123 更新时间:2023-12-02 10:41:36 25 4
gpt4 key购买 nike

我已阅读以下代码:

invokeAll(a2, a1);

相当于:

a2.compute();
a1.join();

在 Fork-Join 的 RecursiveAction 中。

但是,由于 RecursiveTask 返回一个值,我们可能会得到如下值:

Integer result1 = t2.compute();
Integer result2 = t1.join();

然后我们应该合并 result1 和 result2 以产生最终结果。

现在,我的疑问是:

  • invokedAll 可以用于 RecursiveTasks 吗?

  • 如果是这样,如何合并invokeAll调用的结果以返回最终结果?

最佳答案

invokeAll方法可用于RecursiveTask s。需要两个ForkJoinTask s 作为参数,并且由于 RecursiveTask 扩展了 ForkJoinTask,因此 RecursiveTask 可以用作 ForkJoinTask

至于获取结果,invokeAll 不会返回任何内容,因此您不会以这种方式获取信息。您可以调用join每个 RecursiveTask 上的方法。因为您知道 invokeAll 返回时两个任务都已完成,所以 join 方法将很快返回。

invokeAll(t1, t2);
Integer result1 = t1.join();
Integer result2 = t2.join();

但是,此时,您也可以只执行最初执行的操作,调用 computejoin。当您只有两个任务并且需要它们的两个结果时,使用 invokeAll 有点笨拙。

关于java - invokeAll 可以在 RecursiveTask 中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52890969/

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