RecursiveTask <integer>正确实现

时间:2016-06-09 19:03:10

标签: java concurrency

哪一项实施是正确的?

//previous code
leftSum.fork();
...
return (rightSum.compute() + leftSum().join());

return (leftSum.join() + rightSum().compute());

并且说它不正确,结果会产生什么后果?

1 个答案:

答案 0 :(得分:1)

第一种方法是正确的方法,因为您总是需要遵循下一个顺序:

  1. fork()将左任务提交到池中,以便异步执行。
  2. compute()使用当前线程执行正确的任务
  3. join()使当前线程等到它得到左(分叉)任务的结果。
  4. 第二种方法是让线程在执行任务之前等待,这样你就会失去并行执行递归任务的好处,因为它们会一个接一个地执行。