开发中可能会有这样的场景,一个功能需要同时完成不相关的多个操作,最后针对多个操作结果统一处理。比如一个查询功能内部需要同时查询A、B、C、D四个接口,汇总所有接口查询内容后返回,一般来说可以逐个查询汇总即可。
现在问题来了,如接口超时时间限制为3秒,且A、B、C、D四个接口每个接口RT=1,每一个接口都有RT消耗,则同时完成四个接口查询并合并返回的时间必然大于4秒,导致总查询功能接口超时。一般大家会想到使用Future,即希望通过多线程并发执行解决该问题。查询执行开始,启动四个线程同时执行A、B、C、D四个接口查询,最后合并多个线程查询结果即可。开发过程中一般结合线程池配合,以保证更好的线程管理。
简单示例如下<仅供参考>:
1、执行任务线程
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
/**
* 服务提供描述
*/
public class ServiceInvoker implements Callable<List<InsurePolicy>> {
private InsureQueryService insureQueryService;//接口
private String userId;//参数
private String desc;//接口描述,方便接口异常统计
publi