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
- 関連項目:
- 直列化された形式
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明protected abstract V
compute()
このタスクによって実行される主な計算です。protected boolean
exec()
RecursiveTaskのための実行規則を実装します。このタスクが異常な状態で実行された場合であっても、ForkJoinTask.join()
によって返される結果を返します。このタスクが実行されたかどうかが不明の場合は、null
です。protected void
setRawResult(V value)
指定された値を結果として返すことを強制します。クラス 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
-
コンストラクタの詳細
-
RecursiveTask
public RecursiveTask()サブクラスが呼び出すためのコンストラクタ。
-
-
メソッドの詳細
-
compute
protected abstract V compute()このタスクによって実行される主な計算です。- 戻り値:
- 計算の結果
-
getRawResult
public final V getRawResult()次のクラスからコピーされた説明:ForkJoinTask
このタスクが異常な状態で実行された場合であっても、ForkJoinTask.join()
によって返される結果を返します。このタスクが実行されたかどうかが不明の場合は、null
です。 このメソッドは、デバッグを支援したり、拡張機能をサポートするためのものです。 これをほかのコンテキストで使用することは推奨されていません。- 定義:
getRawResult
、クラス:ForkJoinTask<V>
- 戻り値:
- 結果あるいは
null
(完了しない場合)
-
setRawResult
protected final void setRawResult(V value)次のクラスからコピーされた説明:ForkJoinTask
指定された値を結果として返すことを強制します。 このメソッドは拡張機能をサポートするためのものであるため、それ以外の一般的な場合では呼び出してはいけません。- 定義:
setRawResult
、クラス:ForkJoinTask<V>
- パラメータ:
value
- 値
-
exec
protected final boolean exec()RecursiveTaskのための実行規則を実装します。- 定義:
exec
、クラス:ForkJoinTask<V>
- 戻り値:
- このタスクが正常に完了したことがわかっている場合は
true
-