JDK1.8新特性之CompletableFuture

2020-05-31  本文已影响0人  我有一只喵喵

CompletableFuture前言

CompletableFuture是JDK1.8提供的异步函数式编程方式的对Future进行了扩展的工具。CompletableFuture分别实现了Future接口以及JDK1.8中新增的接口CompletionStage。Future接口想必并不陌生,Future接口是JDK1,5中提供,可以用于阻塞式获取结果。CompletionStage是用于异步执行中的阶段处理,用于当某个异步阶段执行完成后,完成一个动作或者计算结果,也可能是完成当前异步阶段后触发其他的异步动作。

CompletionStage

一、CompletionStage异步执行阶段表示

CompletionStage异步执行阶段表示可以分别通过:

二、CompletionStage执行时机

按照多个异步执行阶段之间的依赖关系

CompletionStage异步执行阶段 执行时机 取决于使用前缀 **then ** 的方法

上述可以控制多个阶段之间的依赖关系,但是不保证任何特定的顺序。

根据上一阶段正常执行完成或者异常完成
三、CompletionException异常规则

当一个阶段由于发生异常而被终止之后,相关依赖的阶段可通过捕获处理CompletionException异常

1)若当前阶段通过both依赖两个阶段执行时,当依赖两阶段都发生异常时,当前阶段会捕获到的两个阶段中抛出的任意一个CompletionException

2)当通过either依赖两个阶段时,则只要有一个阶段发生异常,该阶段则捕获到CompletionException

3)若当前阶段依赖的阶段都正常完成,而自己本身发生异常,那么当前阶段将以此异常原因异常完成。

四、CompletionStage执行方式

CompletionStage异步执行阶段的执行方式一共有三种:

1)默认executor执行

2)使用了async前缀的方法,表示异步执行

3)使用自定义Executor执行

CompletionStage中所有的方法都遵守上述触发、执行、异常完成的规则。

CompletableFuture

获取结果的方式:

获取依赖当前state的CompletableFuture数量

上一篇 下一篇

猜你喜欢

热点阅读