Spec-Zone.ru › OpenJDK 25

Class 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
См. также:
  • Сериализованная форма

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе Future

Future.State

Краткое описание конструкторов

Конструктор Описание
RecursiveTask()
Конструктор, вызываемый подклассами.

Краткое описание методов

Модификатор и тип Метод Описание
protected abstract V compute()
Основное вычисление, выполняемое этой задачей.
protected final boolean exec()
Реализует соглашения о выполнении для RecursiveTask.
final V getRawResult()
Возвращает результат, который был бы возвращен методом ForkJoinTask.join(), даже если эта задача завершилась некорректно, или null, если неизвестно, завершилась ли эта задача.
protected final void setRawResult(V value)
Принудительно устанавливает заданное значение в качестве результата.

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

adapt, adapt, adapt, adaptInterruptible, adaptInterruptible, adaptInterruptible, cancel, compareAndSetForkJoinTaskTag, complete, completeExceptionally, exceptionNow, fork, get, get, getException, getForkJoinTaskTag, getPool, getQueuedTaskCount, getSurplusQueuedTaskCount, helpQuiesce, inForkJoinPool, invoke, invokeAll, invokeAll, invokeAll, isCancelled, isCompletedAbnormally, isCompletedNormally, isDone, join, peekNextLocalTask, pollNextLocalTask, pollSubmission, pollTask, quietlyComplete, quietlyInvoke, quietlyJoin, quietlyJoin, quietlyJoinUninterruptibly, reinitialize, resultNow, setForkJoinTaskTag, state, tryUnfork

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

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

Подробное описание конструкторов

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, если известно, что эта задача завершилась нормально

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/util/concurrent/RecursiveTask.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API