线程池结合 CountDownLatch 进行任务分批并行处理

线程池结合 CountDownLatch 进行任务分批并行处理
/**
 * 模拟线程池分批处理任务,主线程需要等待子任务线程执行完,结果汇总之后,主线程继续往下执行
 */
public void handleLogin(List<String> paramList) {
    // 使用线程池中线程分批处理业务逻辑,并行处理任务提高终端响应速度
    CountDownLatch latch = new CountDownLatch(paramList.size());
    for (String param : paramList) {
        ThreadUtils.execute(() -> {
            try {
                log.info("业务逻辑处理,参数:{}", param);
                // 业务逻辑正常处理......
            } catch (Exception e) {
                log.error("调用下游系统出现错误,异常逻辑处理......");
            } finally {
                // 业务逻辑处理完毕,计数器减一【当前线程处理任务完毕,线程释放进入线程池,等待处理下一个任务】
                latch.countDown();
            }
        });
    }
    // 主线程需要等待子任务线程执行完,结果汇总之后,主线程继续往下执行
    try {
        latch.await();
    } catch (Exception e) {
        log.error("等待超时", e);
        throw new RuntimeException("系统处理超时,请稍后再试");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值