68 |
|
* execute other tasks while awaiting joins, which is sometimes more |
69 |
|
* efficient but only applies when all subtasks are known to be |
70 |
|
* strictly tree-structured. Method {@link #invoke} is semantically |
71 |
< |
* equivalent to {@code fork(); join()} but always attempts to |
72 |
< |
* begin execution in the current thread. The "<em>quiet</em>" forms |
73 |
< |
* of these methods do not extract results or report exceptions. These |
71 |
> |
* equivalent to {@code fork(); join()} but always attempts to begin |
72 |
> |
* execution in the current thread. The "<em>quiet</em>" forms of |
73 |
> |
* these methods do not extract results or report exceptions. These |
74 |
|
* may be useful when a set of tasks are being executed, and you need |
75 |
|
* to delay processing of results or exceptions until all complete. |
76 |
|
* Method {@code invokeAll} (available in multiple versions) |
77 |
|
* performs the most common form of parallel invocation: forking a set |
78 |
|
* of tasks and joining them all. |
79 |
|
* |
80 |
+ |
* <p>The execution status of tasks may be queried at several levels |
81 |
+ |
* of detail: {@link #isDone} is true if a task completed in any way |
82 |
+ |
* (including the case where a task was cancelled without executing); |
83 |
+ |
* {@link #isCancelled} is true if completion was due to cancellation; |
84 |
+ |
* {@link #isCompletedNormally} is true if a task completed without |
85 |
+ |
* cancellation or encountering an exception; {@link |
86 |
+ |
* #isCompletedExceptionally} is true if if the task encountered an |
87 |
+ |
* exception (in which case {@link #getException} returns the |
88 |
+ |
* exception); {@link #isCancelled} is true if the task was cancelled |
89 |
+ |
* (in which case {@link #getException} returns a {@link |
90 |
+ |
* java.util.concurrent.CancellationException}); and {@link |
91 |
+ |
* #isCompletedAbnormally} is true if a task was either cancelled or |
92 |
+ |
* encountered an exception. |
93 |
+ |
* |
94 |
|
* <p>The ForkJoinTask class is not usually directly subclassed. |
95 |
|
* Instead, you subclass one of the abstract classes that support a |
96 |
|
* particular style of fork/join processing, typically {@link |