public abstract class RecursiveTask<V> extends ForkJoinTask<V>
ForkJoinTask
。
一个典型的例子,这是一个任务计算斐波那契数列:
class Fibonacci extends RecursiveTask<Integer> {
final int n;
Fibonacci(int n) { this.n = n; }
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();
}
}
然而,除了是一个愚蠢的方式计算Fibonacci函数(有一个,你会在实践中运用简单快速的线性算法),这可能表现不佳,因为最小的个子太小,是值得的分裂。相反,当几乎是所有的叉子/案例加入应用程序,你会挑一些最小粒度(例如10),你总是依次解决而不是细分。
Constructor and Description |
---|
RecursiveTask() |
Modifier and Type | Method and Description |
---|---|
protected abstract V |
compute()
此任务执行的主要计算。
|
protected boolean |
exec()
贯彻执行公约recursivetask。
|
V |
getRawResult()
返回的结果将返回
ForkJoinTask.join() ,即使这个任务完成情况异常,或
null 如果这项任务没有被完成。
|
protected void |
setRawResult(V value)
强制将给定的值作为结果返回。
|
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, pollTask, quietlyComplete, quietlyInvoke, quietlyJoin, reinitialize, setForkJoinTaskTag, tryUnfork
protected abstract V compute()
public final V getRawResult()
ForkJoinTask
ForkJoinTask.join()
,即使这个任务完成情况异常,或
null
如果这项任务没有被完成。这种方法的设计,以帮助调试,以及支持扩展。它在任何其他上下文中的使用是气馁的。
getRawResult
方法重写,继承类
ForkJoinTask<V>
null
如果没有完成
protected final void setRawResult(V value)
ForkJoinTask
setRawResult
方法重写,继承类
ForkJoinTask<V>
value
-价值
protected final boolean exec()
exec
方法重写,继承类
ForkJoinTask<V>
true
如果这个任务已经完成正常
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.