Класс RecursiveTask<V>

Все реализованные интерфейсы:
Serializable, Future<V>
public abstract class RecursiveTask<V>
extends ForkJoinTask<V>

Рекурсивный 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 здесь), для которого вы всегда решаете последовательно, а не делите.
С:
1.7
См. также:
Сериализованная форма

Конструкторы

Конструктор Описание
RecursiveTask()

Методы

Модификатор и тип Метод Описание
protected abstract V compute()

Основное вычисление, выполняемое этой задачей.

protected boolean exec()

Реализует соглашения об выполнении для RecursiveTask.

Методы, объявленные в классе java.util.concurrent.ForkJoinTask

adapt, adapt, adapt, cancel, compareAndSetForkJoinTaskTag, complete, completeExceptionally, fork, get, get, getException, getForkJoinTaskTag, getPool, getQueuedTaskCount, getRawResult, getSurplusQueuedTaskCount, helpQuiesce, inForkJoinPool, invoke, invokeAll, invokeAll, invokeAll, isCompletedAbnormally, isCompletedNormally, join, peekNextLocalTask, pollNextLocalTask, pollSubmission, pollTask, quietlyComplete, quietlyInvoke, quietlyJoin, reinitialize, setForkJoinTaskTag, setRawResult, tryUnfork

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе java.util.concurrent.Future

isCancelled, isDone

Конструкторы

RecursiveTask

public RecursiveTask()

Методы

compute

protected abstract V compute()

Основное вычисление, выполняемое этой задачей.

Возвращает:
результат вычисления

exec

protected final boolean exec()

Реализует соглашения об выполнении для RecursiveTask.

Определено в:
exec в классе ForkJoinTask<V>
Возвращает:
true если эта задача завершилась нормально

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/RecursiveTask.html

Spec-Zone .ru
спецификации, руководства, описания, API