复制代码
主要做了两件事:
-
创建一个ReduceTask任务
-
任务调用invoke()执行
创建的逻辑没有额外的操作,就是将三个参数赋值到实例变量中。
invoke()是ForkJoinTask的方法,方法这里主要关注invoke()
方法的逻辑:
/**
-
Commences performing this task, awaits its completion if
-
necessary, and returns its result, or throws an (unchecked)
-
{@code RuntimeException} or {@code Error} if the underlying
-
computation did so.
-
@return the computed result
*/
public final V invoke() {
int s;
//执行任务
if ((s = doInvoke() & DONE_MASK) != NORMAL)
reportException(s);
// 这里放回的是最终结果
return getRawResult();
}
复制代码
/**
-
Implementation for invoke, quietlyInvoke.
-
@return status upon completion
*/