今天是:
带着程序的旅程,每一行代码都是你前进的一步,每个错误都是你成长的机会,最终,你将抵达你的目的地。
title

RecursiveTask

概述

一个递归的带结果的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();
   }
 }

然而,除了是计算斐波那契数列的愚蠢方法(实际上有一个简单的快速线性算法)外,它很可能表现不佳,因为最小的子任务太小,不值得分裂。相反,就像几乎所有的fork / join应用程序一样,您会选择一个最小的粒度大小(例如这里的10),始终顺序解决而不是细分。

分享到:

专栏

类型标签

网站访问总量