多线程异步处理任务(异步下载)

当下载报表时遇到数据量过多导致接口超时的问题,可以采用后台线程异步生成文件的方法。用户请求下载时启动新线程,主线程返回文件名,然后通过状态查询接口检查文件是否生成完成,最后提供真实的下载接口供用户下载生成的文件。

需求分析

我们在下载报表时,有时候数据较多接口会超时。此时我们可以采用后台进程异步生成文件,生成后前端再下载。

流程图:

 模拟代码:

@RequestMapping("/downExcel")
    public String downExcel(String req){
        String fileName= UUID.randomUUID().toString();
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                //异步生成文件
                createExcel(req,fileName);
            }
        });
        thread.start();
        return fileName;
    }
    @RequestMapping("/downExcelStatus")
    public String downExcelStatus(String fileName){
        //下载文件
        String status="";//获取文件生成状态
        return status;
    }
    @RequestMapping("/downExcelReal")
    public String downExcelReal(String fileName){
        //下载文件
        return fileName;
    }

    private void createExcel(String req, String fileName) {        
        //异步生成文件
        //状态可以存入redis 供downExcelStatus查询
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值