我们可以向forkJoinPool
提交两种类型的任务,一种是RecursiveAction
,另一种是RecursiveTask
。
它们之间有什么区别?
从他们各自的Javadocs的第一行:
- [
RecursiveTask
是] 一个递归的结果承载 ForkJoinTask。- [
RecursiveAction
是] 一个递归的结果无结果 ForkJoinTask。
虽然从技术上讲,RecursiveAction
确实返回了一个值,但它总是null
,因为它是一个ForkJoinTask<Void>
,这是Void
唯一可能的值。
它们很相似,只是RecursiveTask
返回结果,而RecursiveAction
没有返回值。