需求背景:业务场景中,需要计算多个轮次在指定日期范围内每一天的测试用例。
前言:计算某个轮次在日期范围内每一天的测试用例是一个耗时任务,涉及到多张数据表的读取以及复杂的计算过程,若计算过程是多个轮次串行执行性能明显很低,因此很自然的想利用多线程并行执行,加速计算过程。
一、定义任务
继承 Callable
接口,在call()
中放入计算逻辑
/**
* description: 任务实体——统计轮次在指定日期下每天的用例数量 <br>
*/
public class CycleConfiguresCountTask implements Callable<Map<Long, Map<CaseTypeEnum, Map<String, Integer>>>> {
// 项目轮次id
private Long cycleId;
// 指定的日期范围
private List<Date> dateList;
// 计算任务依赖的服务类,具体的计算过程在该类中
private ConfigureService configureService;
public CycleConfiguresCountTask(Long cycleId, List<Date> dateList, ConfigureService configureService) {
this.cycleId = cycleId;
this.dateList = dateList;
this.configureService = configureService;
}
/**
* 根据轮次id计算每天的执行用例数(区分正式员工用例和外包员工用例)
* @return
* @throws Exception
*/
@Override
public Map<Long, Map<CaseTypeEnum, Map<String, Integer>>>