首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >invokeAll可以在RecursiveTask中使用吗?

invokeAll可以在RecursiveTask中使用吗?
EN

Stack Overflow用户
提问于 2018-10-19 10:54:29
回答 1查看 541关注 0票数 1

我读过以下代码:

代码语言:javascript
复制
invokeAll(a2, a1);

相当于:

代码语言:javascript
复制
a2.compute();
a1.join();

在叉子连接中的RecursiveAction中。

但是,由于RecursiveTask返回一个值,所以可能有如下所示:

代码语言:javascript
复制
Integer result1 = t2.compute();
Integer result2 = t1.join();

然后将result1和result2合并,生成最终结果。

现在,我的怀疑是:

  • invokedAll可以用于RecursiveTasks吗?
  • 如果是这样,如何将invokeAll调用的结果合并以返回最终结果?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-21 14:44:45

invokeAll方法可以用于RecursiveTask,它以两个ForkJoinTasks作为参数,因为RecursiveTask扩展了ForkJoinTask,所以RecursiveTask可以用作ForkJoinTask

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

代码语言:javascript
复制
invokeAll(t1, t2);
Integer result1 = t1.join();
Integer result2 = t2.join();

但是,在这一点上,您可以只做您最初做的事情,调用computejoin。当您只有两个任务并且同时需要它们的结果时,使用invokeAll有点笨拙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52890969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档