如何使用线程池,优雅的调用外部接口,然后将数据一并返回给前端

本文探讨了如何通过使用线程池和CountDownLatch优化接口调用,解决接口内部调用多个外部接口导致的响应延迟问题,有效提高了接口处理速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当我们接到一个需求的时候,一个接口里面我们需要调用外部一个两个甚至三个以上的接口的时候,我们一般怎么做呢?
请看下图一个列子,一个接口中,我们需要调用两个查询,然后将数据一起汇合返回给前端页面,

在这里插入图片描述

旧的改变

当我们的查询不多.两个这样写的时候,会不会有什么问题呢? 一个线程处理,执行完第一个,第二个。虽然只有连个查询,我们不会觉得有什么,但是如果三个或者四个呢? 这个接口的处理速度会不会变得有些慢? 怎么去优化?## 功能快捷键

新的改变

下面请看另外一个接口图,直接晒代码,言简意赅

首先我们可以使用我们的线程池
ExecutorService executorService = Executors.newCachedThreadPool();
将上面的图中的代码分别由线程池调用,
由于我们需要将两个查询升至多个查询的数据一并返回给我们的页面,此时
CountDownLatch count = new CountDownLatch(2); (在这我们举列子,就两个查询)定义一个倒数计数器,这个东西很不错,

然后下面代码中我们来了

请看下图 duang duang duang

在这里插入图片描述

count.await(); //等待倒计数器归0
if(StringUtils.isNotBlank(sb.toString())){
sb.deleteCharAt(sb.length()-1);
sb.append(“等”);
}
return BaseResult.success(sb.toString());

这样我们使用线程池来写,分别去执行我们的查询接口代码,就能提高我们的接口反应速度

嘻嘻 END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值