- java.lang.Object
-
- java.util.concurrent.ForkJoinTask<V>
-
- java.util.concurrent.RecursiveTask<V>
-
- 实现的所有接口
-
Serializable,Future<V>
public abstract class RecursiveTask<V> extends ForkJoinTask<V>
递归结果ForkJoinTask。对于一个经典的例子,这里有一个计算Fibonacci数的任务:
然而,除了作为计算Fibonacci函数的愚蠢方法(有一个简单的快速线性算法,你在实践中使用),这可能表现不佳,因为最小的子任务太小而不值得拆分。 相反,就像几乎所有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
-
-
构造方法摘要
构造方法 构造器 描述 RecursiveTask()
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 protected abstract Vcompute()该任务执行的主要计算。protected booleanexec()实现RecursiveTask的执行约定。-
声明方法的类 java.util.concurrent.ForkJoinTask
adapt, adapt, adapt, cancel, compareAndSetForkJoinTaskTag, complete, completeExceptionally, fork, get, get, getException, getForkJoinTaskTag, getPool, getQueuedTaskCount, getRawResult, getSurplusQueuedTaskCount, helpQuiesce, inForkJoinPool, invoke, invokeAll, invokeAll, invokeAll, isCompletedAbnormally, isCompletedNormally, join, peekNextLocalTask, pollNextLocalTask, pollSubmission, pollTask, quietlyComplete, quietlyInvoke, quietlyJoin, reinitialize, setForkJoinTaskTag, setRawResult, tryUnfork
-
声明方法的类 java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
声明方法的接口 java.util.concurrent.Future
isCancelled, isDone
-
-
-
-
方法详细信息
-
compute
protected abstract V compute()
该任务执行的主要计算。- 结果
- 计算的结果
-
exec
protected final boolean exec()
实现RecursiveTask的执行约定。- Specified by:
-
exec类ForkJoinTask<V> - 结果
-
true如果已知此任务已正常完成
-
-