クラスRecursiveTask<V>

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
関連項目:
  • コンストラクタの詳細

    • 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