モジュール java.base
パッケージ java.util.concurrent

クラス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