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

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

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

旧的改变

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

新的改变

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

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

然后下面代码中我们来了

请看下图 duang duang duang

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

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

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

嘻嘻 END

你可能感兴趣的:(JAVA)