CompletableFuture异步编排

CompletableFuture是Java8的新特性,用于异步任务执行和结果处理。它支持与StreamAPI和ReactiveStreamAPI集成,提供回调、线程管理及复杂操作的组合。本文介绍其基本用法和常见API如获取异步任务、回调处理、线程串行化和组合任务的使用场景。
摘要由CSDN通过智能技术生成

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

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

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

常用api:

       1. 获取一个异步任务:

        

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

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

        2.计算完成是回调:

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

        3.handle方法:

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

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

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

 

         6.两任务组合一个完成(两个任务只要完成一个就能后续任务):

 

       7. 多任务组合:

 

        allof:等待所有任务完成

        anyof:只要一个任务完成 

 

 

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值