- java.lang.Object
-
- java.util.concurrent.ForkJoinTask<V>
-
- java.util.concurrent.RecursiveTask<V>
-
- All Implemented Interfaces:
-
Serializable,Future<V>
public abstract class RecursiveTask<V> extends ForkJoinTask<V>
递归结果ForkJoinTask。对于一个典型的例子,这里是一个任务计算斐波纳契数字:
然而,除了计算斐波纳契函数的一种愚蠢的方法(有一个简单的快速线性算法,您将在实践中使用),这很可能表现不佳,因为最小的子任务太小而不能被分解。 相反,正如几乎所有fork / join应用程序的情况一样,您可以选择一些最小粒度大小(例如,在此为10),您始终依次解决而不是细分。class Fibonacci extends RecursiveTask<Integer> { final int n; Fibonacci(int n) { this.n = n; } protected Integer compute() { if (n <= 1) return n; Fibonacci f1 = new Fibonacci(n - 1); f1.fork(); Fibonacci f2 = new Fibonacci(n - 2); return f2.compute() + f1.join(); } }- 从以下版本开始:
- 1.7
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 RecursiveTask()
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 protected abstract Vcompute()这个任务执行的主要计算。protected booleanexec()实现RecursiveTask的执行约定。VgetRawResult()返回由ForkJoinTask.join()返回的结果,即使此任务异常完成,或null如果此任务未知已完成。protected voidsetRawResult(V value)强制给定的值作为结果返回。-
Methods inherited from class java.util.concurrent.ForkJoinTask
adapt, adapt, adapt, 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, reinitialize, setForkJoinTaskTag, tryUnfork
-
-
-
-
方法详细信息
-
compute
protected abstract V compute()
这个任务执行的主要计算。- 结果
- 计算的结果
-
getRawResult
public final V getRawResult()
描述从类别复制:ForkJoinTask- Specified by:
-
getRawResult在ForkJoinTask<V> - 结果
-
结果,或
null如果没有完成
-
setRawResult
protected final void setRawResult(V value)
描述从类别复制:ForkJoinTask强制给定的值作为结果返回。 这种方法被设计为支持扩展,一般不应该以其他方式调用。- Specified by:
-
setRawResult在ForkJoinTask<V> - 参数
-
value- 值
-
exec
protected final boolean exec()
实现RecursiveTask的执行约定。- Specified by:
-
exec在ForkJoinTask<V> - 结果
-
true如果此任务已知已正常完成
-
-