AI-generated Key Takeaways
-
RecursiveTask
is a class in Java that's used for computations that can be broken down into smaller, similar subtasks, often used in the Fork/Join framework. -
It extends
ForkJoinTask
and provides a mechanism for recursively splitting work and combining results. -
The
compute()
method is where you define the core logic of your task, breaking it down into smaller subtasks if necessary and combining their results. -
You should carefully consider the minimum size of subtasks to avoid performance issues due to excessive overhead from creating too many small tasks.
-
RecursiveTask
is designed for tasks that return a result; for tasks without a result, useRecursiveAction
.
A recursive result-bearing ForkJoinTask
.
For a classic example, here is a task computing Fibonacci numbers:
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();
}
}
Public Constructor Summary
Public Method Summary
final V |
getRawResult()
Returns the result that would be returned by
join() , even
if this task completed abnormally, or null if this task
is not known to have been completed. |
Protected Method Summary
abstract V |
compute()
The main computation performed by this task.
|
final boolean |
exec()
Implements execution conventions for RecursiveTask.
|
final void |
setRawResult(V value)
Forces the given value to be returned as a result.
|
Inherited Method Summary
Public Constructors
public RecursiveTask ()
Public Methods
public final V getRawResult ()
Returns the result that would be returned by join()
, even
if this task completed abnormally, or null
if this task
is not known to have been completed. This method is designed
to aid debugging, as well as to support extensions. Its use in
any other context is discouraged.
Returns
- the result, or
null
if not completed
Protected Methods
protected abstract V compute ()
The main computation performed by this task.
Returns
- the result of the computation
protected final boolean exec ()
Implements execution conventions for RecursiveTask.
Returns
true
if this task is known to have completed normally
protected final void setRawResult (V value)
Forces the given value to be returned as a result. This method is designed to support extensions, and should not in general be called otherwise.
Parameters
value | the value |
---|