CompletableFuture

521 阅读1分钟

1、构造CompletableFuture

supplyAsync:有返回值、Supplier
runAsync:无返回值、Runnable

2、获取结果

get:可以超时等待或一直等待
getNow:立即返回,没有处理完返回默认值
join

3、响应结果或异常

whenCompleteAsync
handleAsync
exceptionally:异常时的处理

5、依赖一个阶段的任务流(前一个阶段正常结束,才会执行下一个阶段)

thenApplyAsync:有参数(前一个阶段的结果),有返回值
thenRunAsync:无参数,无返回值
thenAcceptAsync:有参数(前一个阶段的结果),无返回值
thenComposeAsync:有参数(前一个阶段的结果),有返回值(CompletionStage<U>)

6、依赖两个阶段的任务流(在两个阶段都完成后,执行另一个阶段)

runAfterBothAsync:任务类型是Runnable
thenCombineAsync:任务类型是BiFunction,会返回一个结果
thenAcceptBothAsync:任务类型是BiConsumer

7、只需要其中任意一个阶段完成,就执行下一个阶段

runAfterEitherAsync:Runnable
applyToEitherAsync:Function
acceptEitherAsync:Consumer

8、构建依赖多个阶段的任务流

allOf:所有的子任务都完成
anyOf:任意一个完成就执行

9、任务类型整理

无参数、无返回:Runnable
无参数、有返回:Supplier
一个参数、无返回:Consumer
一个参数、有返回:Function
两个参数、无返回:BiConsumer
两个参数、有返回:BiFunction

10、带Async后缀的解释

由那种线程去执行这个任务

11、执行的线程池

自定义的或者ForkJoinPool.commonPool()