java.lang.Object
java.util.concurrent.ForkJoinTask<V>
java.util.concurrent.RecursiveTask<V>
- 型パラメータ:
V
- タスクの結果のタイプ
- すべての実装されたインタフェース:
Serializable
,Future<V>
public abstract class RecursiveTask<V> extends ForkJoinTask<V>
結果を生成する再帰的な
ForkJoinTask
。
たとえば、係数を計算するためのタスク・ベースのプログラムを次に示します:
import java.util.concurrent.RecursiveTask;
import java.math.BigInteger;
public class Factorial {
static class FactorialTask extends RecursiveTask<BigInteger> {
private final int from, to;
FactorialTask(int from, int to) { this.from = from; this.to = to; }
protected BigInteger compute() {
int range = to - from;
if (range == 0) { // base case
return BigInteger.valueOf(from);
} else if (range == 1) { // too small to parallelize
return BigInteger.valueOf(from).multiply(BigInteger.valueOf(to));
} else { // split in half
int mid = from + range / 2;
FactorialTask leftTask = new FactorialTask(from, mid);
leftTask.fork(); // perform about half the work locally
return new FactorialTask(mid + 1, to).compute()
.multiply(leftTask.join());
}
}
}
static BigInteger factorial(int n) { // uses ForkJoinPool.commonPool()
return (n <= 1) ? BigInteger.ONE : new FactorialTask(1, n).invoke();
}
public static void main(String[] args) {
System.out.println(factorial(Integer.parseInt(args[0])));
}
}
- 導入されたバージョン:
- 1.7
- 関連項目:
-
ネストされたクラスのサマリー
インタフェースjava.util.concurrent.Futureで宣言されたネストされたクラス/インタフェース
Future.State
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明protected abstract V
compute()
このタスクによって実行される主な計算です。protected final boolean
exec()
RecursiveTaskのための実行規則を実装します。final V
このタスクが異常な状態で実行された場合であっても、ForkJoinTask.join()
によって返される結果を返します。このタスクが実行されたかどうかが不明の場合は、null
です。protected final void
setRawResult
(V value) 指定された値を結果として返すことを強制します。クラス java.util.concurrent.ForkJoinTaskで宣言されたメソッド
adapt, adapt, adapt, adaptInterruptible, 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, quietlyJoin, quietlyJoinUninterruptibly, reinitialize, setForkJoinTaskTag, tryUnfork
クラス java.lang.Objectで宣言されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インタフェース java.util.concurrent.Futureで宣言されたメソッド
exceptionNow, resultNow, state
-
コンストラクタの詳細
-
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
-