22 |
|
* decremented; otherwise, the completion action is performed, and if |
23 |
|
* this completer itself has a completer, the process is continued |
24 |
|
* with its completer. As is the case with related synchronization |
25 |
< |
* components such as {@link Phaser} and {@link |
26 |
< |
* java.util.concurrent.Semaphore} these methods affect only internal |
27 |
< |
* counts; they do not establish any further internal bookkeeping. In |
28 |
< |
* particular, the identities of pending tasks are not maintained. As |
29 |
< |
* illustrated below, you can create subclasses that do record some or |
30 |
< |
* all pended tasks or their results when needed. |
25 |
> |
* components such as {@link java.util.concurrent.Phaser Phaser} and |
26 |
> |
* {@link java.util.concurrent.Semaphore Semaphore}, these methods |
27 |
> |
* affect only internal counts; they do not establish any further |
28 |
> |
* internal bookkeeping. In particular, the identities of pending |
29 |
> |
* tasks are not maintained. As illustrated below, you can create |
30 |
> |
* subclasses that do record some or all pended tasks or their results |
31 |
> |
* when needed. |
32 |
|
* |
33 |
|
* <p>A concrete CountedCompleter class must define method {@link |
34 |
|
* #compute}, that should, in almost all use cases, invoke {@code |