小白的web优化之路 四、使用Callable与Future来实现异步请求

本文讲述了如何使用Java中的Callable和Future实现异步请求以优化Web接口性能。在面对需要聚合多个接口数据并实时返回的挑战时,通过创建Callable任务并用Future管理,实现了接近单个接口调用时长的总耗时,降低了接口总时长。

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

  在上一篇 小白的web优化之路 三、使用MQ来实现事务异步处理 中,我们使用MQ来将任务异步话,使接口速度得到的极大的提高,这一节中,我们就要考虑一个需要同步返回多次请求的问题。

  在完成了产品经理的那个发送短信通知的‘古怪’需求之后,小白觉得自己终于可以继续开发CURD的任务了,心里不免有点小激动。突然,小白收到了产品经理的一个消息,小白心里一震,打开消息,屏幕上写着“小白我这有一个获取信息的需求,你过来一下吧”。

  小白心里一想,不就是获取信息么,谁不会呢?哪知道去了产品经理的需求后,小白才意思到自己还是太年轻,这个获取信息的接口需要调用公司其它组的多个接口,然后将数据聚合起来,而且数据要求实时,并根据用户喜好返回不同的数据,这就要求很难去做一个缓存。但是如果一个一个去调用接口的话,那岂不是这个接口的总时长要爆炸?前端肯定是不会同意的?那怎么办呢?

  这时候小白的主管过来了,看到这种情况,跟小白说,我们可以使用异步请求接口,这样假使有5个接口,我们也可以以请求一个接口的速度来获取到数据。小白开始嘀咕,如果这样的话,那我是启动五个线程,去执行对应的Runnable,那我岂不是在主线程中循环的判断这个Runnable有没有执行完,并获取到相应的结果,听起来好复杂啊。主管笑了笑,你可以使用Java中的Callable与Future。

  在Java中,其实已经有了对异步处理任务并返回相应结果的类,即为Callable与Future。其中Callable为我们执行任务的接口,我们实现了Callable接口之后,将其封装到Future中,既可以使用Future来获取异步数据值,停止异步任务,捕捉异步操作中的异常等。

  我们以接口中异步获取5个网站数据为例,下面是Callable接口:

package com.happyheng.callable;

import com.happyh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值