32 |
|
* <li>Actions supplied for dependent completions of |
33 |
|
* <em>non-async</em> methods may be performed by the thread that |
34 |
|
* completes the current CompletableFuture, or by any other caller of |
35 |
< |
* a completion method.</li> |
35 |
> |
* a completion method. |
36 |
|
* |
37 |
|
* <li>All <em>async</em> methods without an explicit Executor |
38 |
|
* argument are performed using the {@link ForkJoinPool#commonPool()} |
46 |
|
* example: {@code supplyAsync(supplier, delayedExecutor(timeout, |
47 |
|
* timeUnit))}. To support methods with delays and timeouts, this |
48 |
|
* class maintains at most one daemon thread for triggering and |
49 |
< |
* cancelling actions, not for running them.</li> |
49 |
> |
* cancelling actions, not for running them. |
50 |
|
* |
51 |
|
* <li>All CompletionStage methods are implemented independently of |
52 |
|
* other public methods, so the behavior of one method is not impacted |
53 |
< |
* by overrides of others in subclasses. </li> |
53 |
> |
* by overrides of others in subclasses. |
54 |
|
* |
55 |
|
* <li>All CompletionStage methods return CompletableFutures. To |
56 |
|
* restrict usages to only those methods defined in interface |
57 |
|
* CompletionStage, use method {@link #minimalCompletionStage}. Or to |
58 |
|
* ensure only that clients do not themselves modify a future, use |
59 |
< |
* method {@link #copy}. </li> </ul> |
59 |
> |
* method {@link #copy}. |
60 |
> |
* </ul> |
61 |
|
* |
62 |
|
* <p>CompletableFuture also implements {@link Future} with the following |
63 |
|
* policies: <ul> |
68 |
|
* completion. Method {@link #cancel cancel} has the same effect as |
69 |
|
* {@code completeExceptionally(new CancellationException())}. Method |
70 |
|
* {@link #isCompletedExceptionally} can be used to determine if a |
71 |
< |
* CompletableFuture completed in any exceptional fashion.</li> |
71 |
> |
* CompletableFuture completed in any exceptional fashion. |
72 |
|
* |
73 |
|
* <li>In case of exceptional completion with a CompletionException, |
74 |
|
* methods {@link #get()} and {@link #get(long, TimeUnit)} throw an |
76 |
|
* corresponding CompletionException. To simplify usage in most |
77 |
|
* contexts, this class also defines methods {@link #join()} and |
78 |
|
* {@link #getNow} that instead throw the CompletionException directly |
79 |
< |
* in these cases.</li> </ul> |
79 |
> |
* in these cases. |
80 |
> |
* </ul> |
81 |
|
* |
82 |
|
* <p>Arguments used to pass a completion result (that is, for |
83 |
|
* parameters of type {@code T}) for methods accepting them may be |