耗时任务的并行执行

本文介绍了一个业务场景,通过多线程并行执行来加速多个轮次在指定日期范围内每一天的测试用例计算。文章详细阐述了如何定义任务、配置线程池以实现性能优化,并在客户端进行任务的创建、提交和执行,以此提高程序性能。
摘要由CSDN通过智能技术生成

需求背景:业务场景中,需要计算多个轮次在指定日期范围内每一天的测试用例。

前言:计算某个轮次在日期范围内每一天的测试用例是一个耗时任务,涉及到多张数据表的读取以及复杂的计算过程,若计算过程是多个轮次串行执行性能明显很低,因此很自然的想利用多线程并行执行,加速计算过程。


一、定义任务

继承 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>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值