线程池CompletableFuture allOf().join多线程阻塞直至所有线程结束

ExecutorService pool = Executors.newFixedThreadPool(1000);
CompletableFuture[] futureList = list.parallelStream().map(item-> CompletableFuture.supplyAsync(() -> {
            for(int i=0;i<24;i++){
                for(int j=0;j<count;j++){
                    List<ElectricModel> device_info = new ArrayList<>();

                    Timestamp upload_time = new Timestamp(item + i*3600000 + (long) (Math.random()*57*60*1000));
                    Timestamp gather_time = upload_time;
                    DeviceProtocol deviceProtocol = new DeviceProtocol();
                    deviceProtocol.setTenant_id(tenant_id);
                    deviceProtocol.setServer_id(server_id);
                    deviceProtocol.setUpload_time(upload_time);
                    deviceProtocol.setPrj_id(prj_id);
                    for (String device_id : getDevices()) {
                        ElectricModel model=new ElectricModel();
                        model.setDevice_id(device_id);
                        model.setGather_time(gather_time);
                        model.setDevice_path(device_path);
                        model.setState(0);
                        model.setElectric_meter(createElectricMeter(device_id,gather_time.getTime()));

                        if(getDuanluqiDevices().contains(device_id)){
                            model.setEpt_stat(createDeviceStateParam(device_id));
                        }

                        device_info.add(model);
                    }


                    deviceProtocol.setDevice_info(device_info);

                    //todo kafka send msg
                    sendMsg(deviceProtocol);
                }
            }
            System.out.println(new Timestamp(item)+"任务完成");
            return item;
        }, pool)
                .whenComplete((s,e)->{

                })
).toArray(CompletableFuture[]:: new);
//所有任务执行完才放行
CompletableFuture.allOf(futureList).join();
//关闭线程池
pool.shutdown();
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值