ForkJoinPool 中的递归任务和递归操作之间的区别



我们可以向forkJoinPool提交两种类型的任务,一种是RecursiveAction,另一种是RecursiveTask

它们之间有什么区别?

从他们各自的Javadocs的第一行:

  • [RecursiveTask是] 一个递归的结果承载 ForkJoinTask。
  • [RecursiveAction是] 一个递归的结果无结果 ForkJoinTask。

虽然从技术上讲,RecursiveAction确实返回了一个值,但它总是null,因为它是一个ForkJoinTask<Void>,这是Void唯一可能的值。

它们很相似,只是RecursiveTask返回结果,而RecursiveAction没有返回值。

最新更新