java.lang.Object
java.util.concurrent.ForkJoinTask <V>
java.util.concurrent.RecursiveTask<V>
- 类型参数:
V- 任务结果的类型
- 所有已实现的接口:
Serializable,Future<V>
递归结果轴承
ForkJoinTask 。
例如,这是一个基于任务的计算阶乘的程序:
import java.util.concurrent.RecursiveTask;
import java.math.BigInteger;
public class Factorial {
static class FactorialTask extends RecursiveTask<BigInteger> {
private final int from, to;
FactorialTask(int from, int to) { this.from = from; this.to = to; }
protected BigInteger compute() {
int range = to - from;
if (range == 0) { // base case
return BigInteger.valueOf(from);
} else if (range == 1) { // too small to parallelize
return BigInteger.valueOf(from).multiply(BigInteger.valueOf(to));
} else { // split in half
int mid = from + range / 2;
FactorialTask leftTask = new FactorialTask(from, mid);
leftTask.fork(); // perform about half the work locally
return new FactorialTask(mid + 1, to).compute()
.multiply(leftTask.join());
}
}
}
static BigInteger factorial(int n) { // uses ForkJoinPool.commonPool()
return (n <= 1) ? BigInteger.ONE : new FactorialTask(1, n).invoke();
}
public static void main(String[] args) {
System.out.println(factorial(Integer.parseInt(args[0])));
}
}
- 自从:
- 1.7
- 参见:
-
内部类总结
在接口 java.util.concurrent.Future 中声明的嵌套类/接口
Future.State -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述protected abstract Vcompute()此任务执行的主要计算。protected final booleanexec()实现 RecursiveTask 的执行约定。final V返回将由ForkJoinTask.join()返回的结果,即使此任务异常完成,或null如果不知道此任务已完成。protected final voidsetRawResult(V value) 强制将给定值作为结果返回。在类 java.util.concurrent.ForkJoinTask 中声明的方法
adapt, adapt, adapt, adaptInterruptible, cancel, compareAndSetForkJoinTaskTag, complete, completeExceptionally, fork, get, get, getException, getForkJoinTaskTag, getPool, getQueuedTaskCount, getSurplusQueuedTaskCount, helpQuiesce, inForkJoinPool, invoke, invokeAll, invokeAll, invokeAll, isCancelled, isCompletedAbnormally, isCompletedNormally, isDone, join, peekNextLocalTask, pollNextLocalTask, pollSubmission, pollTask, quietlyComplete, quietlyInvoke, quietlyJoin, quietlyJoin, quietlyJoinUninterruptibly, reinitialize, setForkJoinTaskTag, tryUnfork在类 java.lang.Object 中声明的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait在接口 java.util.concurrent.Future 中声明的方法
exceptionNow, resultNow, state
-
构造方法详细信息
-
RecursiveTask
public RecursiveTask()子类调用的构造方法。
-
-
方法详情
-
compute
此任务执行的主要计算。- 返回:
- 计算结果
-
getRawResult
从类复制的描述:ForkJoinTask返回将由ForkJoinTask.join()返回的结果,即使此任务异常完成,或null如果不知道此任务已完成。此方法旨在帮助调试以及支持扩展。不鼓励在任何其他上下文中使用它。- 指定者:
getRawResult在类ForkJoinTask<V>中- 返回:
-
结果,或者
null如果没有完成
-
setRawResult
从类复制的描述:ForkJoinTask强制将给定值作为结果返回。此方法旨在支持扩展,通常不应以其他方式调用。- 指定者:
setRawResult在类ForkJoinTask<V>中- 参数:
value- 值
-
exec
protected final boolean exec()实现 RecursiveTask 的执行约定。- 指定者:
exec在类ForkJoinTask<V>中- 返回:
true如果已知此任务已正常完成
-