Java 多线程工作之CompletableFuture.runAsync案例

 public static void main(String[] args) {
        //runAsync 方法没返回值    用upplyAsync的话就有返回值
        CompletableFuture<Void> completableFuture = CompletableFuture.runAsync(()->{
                //大区 + 数量
                List<Map<String, Object>> regionNum = null;
                try {
                    regionNum = ddpSaleReportService.getRegionNum(params);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                ret.put("regionAndNum",regionNum);
            }).exceptionally(exception->{
                log.error("xx方法获取大区+数量异常:{}",exception.getMessage());
                return null;
            });
            CompletableFuture<Void> completableFuture1 = CompletableFuture.runAsync(()->{
                //车系 + 数量
                List<Map<String, Object>> carSeriesList = null;
                try {
                    carSeriesList = ddpSaleReportService.carSeriesProportionNum(params);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                ret.put("carSeries",carSeriesList);
            }).exceptionally(exception->{
                log.error("xx方法获取车系+数量异常:{}",exception.getMessage());
                //如果需要ret.put("carSeries",null);这种操作就在这里写
                ret.put("carSeries",null);
                //completableFuture1任务返回什么 这里就返回什么
                return null;
            });
            //扩展:这个方法还可以以线程池的方式去执行这条任务,避免频繁的创建线程 销毁线程造成性能损失
            //CompletableFuture test = CompletableFuture.runAsync(()->{},线程池);
            //由于任务1任务2是异步的,此处可以继续写业务代码,上面两条任务执行不影响主线程继续执行后面的业务代码

            //get()方法是等待任务1,任务2完成后在返回。任务1任务2执行期间会阻塞在这里
            CompletableFuture.allOf(completableFuture,completableFuture1).get();
           //后面继续写方法
    }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值