CompletableFuture异步编排

CompletableFuture 是 Java 8 中新增的一个异步编程工具类,它是基于 Future 和 CompletionStage 接口构建的,可以与 Java 8 中的 Stream API 配合使用,也能够与 Java 9 中的 Reactive Stream API 进行交互。

主要用于异步执行任务并返回结果,实现异步计算和操作组合。它提供了一种灵活、可组合的方式来实现异步计算,同时也提供了异常处理、取消、超时等特性。在CompletableFuture中,我们可以通过回调函数来处理任务的结果,也可以使用其它方法来组合多个CompletableFuture对象,以构建更复杂的异步操作流水线。
 

案例:在实际的开发中为了实现一个业务功能,往往需要调用很多的功能,而每一个功能的执行都需要消耗时间,需要等所有的功能执行完毕该业务才能响应(以上也就是我们说的同步串行化执行),这样会导致我们业务功能的效率地。CompletableFuture就是实现一个业务里面的多个功能同时执行(并发执行),同时也能实现一个功能需要依赖另外一个功能的结果。

常用api:

       1. 获取一个异步任务:

        CompletableFuture异步编排_第1张图片

        注意:runXxx都是没有返回值的,supplyXss可以获取返回值的结果通过get

()获取返回结果值,可以使用自定义线程池,否则就使用默认的线程池 

        2.计算完成是回调:

CompletableFuture异步编排_第2张图片

        注意:方法不以Async 结尾,意味着 Action 使用相同的线程执行,而Async 可能会使用其他线程执行《如果是使用相同的线程池,也可能会被同一个线程选中执行)

        3.handle方法:

CompletableFuture异步编排_第3张图片

        注意:和 complete 一样,可对结果做最后的处理(可处理异常),可改变返回值。 

         4.线程串行化方法(典型场景A任务需要B任务的结果值):

CompletableFuture异步编排_第4张图片

CompletableFuture异步编排_第5张图片

        5.两任务组合都要完成(两个任务同时完成才能执行后续任务):

CompletableFuture异步编排_第6张图片

CompletableFuture异步编排_第7张图片 

CompletableFuture异步编排_第8张图片         6.两任务组合一个完成(两个任务只要完成一个就能后续任务):

CompletableFuture异步编排_第9张图片

CompletableFuture异步编排_第10张图片 

CompletableFuture异步编排_第11张图片       7. 多任务组合:

 

        allof:等待所有任务完成

        anyof:只要一个任务完成 

 

 

        

你可能感兴趣的:(java)