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
。
従来の例として、フィボナッチの数列を計算しているタスクを次に示します。
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();
}
}
ただし、フィボナッチ関数を計算するための低機能な方法である点を除けば(実際に使用される単純で、高速な線形アルゴリズムが存在します)、最小のサブタスクが小さすぎて分割することができないため、これは性能的に劣る可能性があります。 代わりに、ほぼすべての分岐/結合アプリケーションと同様に、分割するのではなく、常に連続的に解く場合に使用する、何らかの最小の粒度サイズ(たとえば、ここでは10)を選択します。 - 導入されたバージョン:
- 1.7
- 関連項目:
- 直列化された形式
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 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
-
コンストラクタの詳細
-
RecursiveTask
public RecursiveTask()
-
-
メソッドの詳細