线程结束后执行demo

/**
     * 账单excel导出
     */
    @ResponseBody
    @RequestMapping(value = "/excelOrder", method = RequestMethod.POST)
    public SystemResult excelOrder(long companyId,ApiPcOrderReq req, HttpServletRequest request, HttpServletResponse response) {
        log.info("账单excel导出入参companyId={},ApiPcOrderReq={}", companyId,JSONObject.toJSONString(req));
        long startTime=System.currentTimeMillis();   //获取开始时间
        //根据多条件查询userList
        String name=req.getUserName();
        if (StringUtils.isNotBlank(name))name="%"+name+"%";
       List<Integer> orderUserIds = crmUserDao.findByCondition(name, req.getOrganization_id(),req.getBranch_id());
        log.info("账单excel导出|orderUserIds={}",orderUserIds.size());

        log.info("根据人员id列表和其余条件拿到订单列表");
        List<OrderOrder>orders = orderOrderDao.findExcelOrders(orderUserIds,
                req.getPayStatus(),
                req.getOrderDate(),
                req.getPayTimeStart(),
                req.getPayTimeEnd());

        //遍历查询部门支部名称信息
        List<ApiPcOrderResp.order> orderModerns=new ArrayList<ApiPcOrderResp.order>();

        ExecutorService es = Executors.newCachedThreadPool();
        for (OrderOrder order:
        orders) {
            Thread thread=new Thread(()->{
                getAllNames(orderModerns, order);
            });
            es.execute(thread);
        }
        /*
         * es.shutdown(); 阻止新任务的提交,但是原本已经提交的,不会受到影响,当已提交的任务全部完成后,中断闲置的线程
         * es.shutdownNow(); 阻止新任务的提交,且已提交的任务也会受到影响,不等已提交的任务完成,就会中断所有的线程。
         */
        es.shutdown();
        log.info("账单excel导出|获取的账单数orderModerns={}", orderModerns.size());

        try {
            myLock(es,orderModerns,request,response,companyId);
        } catch (Exception e) {
            e.printStackTrace();
            result=new SystemResult(Dict_transaction_result_code.SYSTEM_EXCEPTION,"账单excel导出|excel系统异常",companyId);
            log.info("账单excel导出result={}", JSONObject.toJSONString(result));
            return result;
        }

        result=new SystemResult(Dict_transaction_result_code.SUCCESS,"账单excel导出",companyId);
        log.info("账单excel导出result={}", JSONObject.toJSONString(result));
        long endTime=System.currentTimeMillis();   //获取开始时间
        log.info("=============执行时间time={}ms",endTime-startTime);
        return result;
    }

    private void myLock(ExecutorService es,List<ApiPcOrderResp.order> orderModerns, HttpServletRequest request, HttpServletResponse response,long companyId) throws IOException, InterruptedException {
        if (es.isTerminated()) {
            excelService.excelOrder(orderModerns,request,response,companyId);
        } else {
            Thread.sleep(1000 * 60); // 1000 毫秒,也就是1秒.1分
            myLock(es,orderModerns,request,response,companyId);
        }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值