使用CompletableFuture异步编排

1. CompletableFuture介绍

  • 问题描述:假设现在是一个代驾系统,而司机结束代驾服务页面非常复杂,数据的获取都需要远程调用,必然需要花费更多的时间。

假如司机结束代驾服务的每个查询,需要如下标注的时间才能完成

  1. 获取订单信息 1s

  2. 计算防止刷单 0.5s

  3. 计算订单实际里程 0.5s

  4. 计算订单实际代驾费用 1s

  5. ......

  • 那么,司机需要4s后才能结束代驾服务。很显然是不能接受的。如果有多个线程同时完成这多步操作,也许只需要1.1s即可完成响应

  • 使用CompletableFuture可用于线程异步编排,使原本串行执行的代码,变为并行执行,提高代码执行速度。

2. CompletableFuture使用

说明:使用CompletableFuture异步编排大多方法都会有一个重载方法,会多出一个executor参数,用来传来自定义的线程池,如果不传就会使用默认的线程池。

2.1 创建异步编排对象

public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier);
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值