Spec-Zone.ru › OpenJDK 21

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

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

Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.concurrent.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)
Вынуждает возврат данного значения в качестве результата.

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

adapt, adapt, adapt, adaptInterruptible, cancel, compareAndSetForkJoinTaskTag, complete, completeExceptionally, 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, setForkJoinTaskTag, tryUnfork

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

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

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

exceptionNow, resultNow, state

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

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

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

Spec-Zone.ru

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