我读过以下代码:
invokeAll(a2, a1);相当于:
a2.compute();
a1.join();在叉子连接中的RecursiveAction中。
但是,由于RecursiveTask返回一个值,所以可能有如下所示:
Integer result1 = t2.compute();
Integer result2 = t1.join();然后将result1和result2合并,生成最终结果。
现在,我的怀疑是:
发布于 2018-10-21 14:44:45
invokeAll方法可以用于RecursiveTask,它以两个ForkJoinTasks作为参数,因为RecursiveTask扩展了ForkJoinTask,所以RecursiveTask可以用作ForkJoinTask。
至于结果,invokeAll不返回任何信息,所以您不会以这种方式获取信息。您可以做的是在每个RecursiveTask上调用RecursiveTask方法,因为您知道当invokeAll返回时这两个任务都已经完成,所以join方法将很快返回。
invokeAll(t1, t2);
Integer result1 = t1.join();
Integer result2 = t2.join();但是,在这一点上,您可以只做您最初做的事情,调用compute和join。当您只有两个任务并且同时需要它们的结果时,使用invokeAll有点笨拙。
https://stackoverflow.com/questions/52890969
复制相似问题