模块 java.base

类 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 如果已知此任务已正常完成