创建
1 |
|
默认Executor为:
1 |
|
注意:daemon为true
也可以自定义Executor,例如:
1 |
|
使用
单个
thenApply(Function)
1 |
|
当前CompletionStage正常执行完成后执行Function,然后返回新的CompletionStage
thenAccept(Comsumer)
thenRun(Runnable)
两个
thenCombine(CompletionStage, BiFunction)
1 |
|
当前CompletionStage正常执行完成后,然后等指定CompletionStage正常执行完成后,执行BiFunction(两个CompletionStage的结果作为输入),然后返回新的CompletionStage
thenAcceptBoth
1 |
|
runAfterBoth
1 |
|
二选一
applyToEither
1 |
|
当前CompletionStage或指定CompletionStage正常执行完成后,执行Function,然后返回新的CompletionStage
acceptEither
runAfterEither
thenCompose(Function)
1 |
|
当前CompletionStage正常执行完成后,执行Function并返回CompletionStage
终态
exceptionally(Function)
1 |
|
当前CompletionStage发生异常时,执行Function,然后返回新的CompletionStage
whenComplete(BiConsumer)
handle(BiFunction)
*Asnyc
上述方法(不以Async
结尾)默认继续在上一个异步任务执行线程中执行,而其对应的以Async
结尾的方法,会使用默认Executor
来执行,可能与上一个异步任务线程不同,即使共用相同的线程池,线程池调度存在不确定性。
例如:
不以Async结尾的方法执行线程
1 |
|
以Async结尾的方法执行线程
1 |
|