Класс 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 |
Принудительно задаёт данное значение в качестве результата. |
Методы, объявленные в классе java.util.concurrent.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
Подробное описание конструкторов
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, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/RecursiveTask.html