为了账号安全,请及时绑定邮箱和手机立即绑定

ExecutorService怎样不用shutdown,awaitTermination实现主线程等

ExecutorService怎样不用shutdown,awaitTermination实现主线程等

慕运维8079593 2019-03-22 15:15:23
ExecutorService es = Executors.newFixedThreadPool(THREADPOOLSIZE+1);        while(true){            long startTime2 = System.currentTimeMillis();            numIids = getIds(batchId, LIMITSIZE);            if (numIids == null || numIids.isEmpty()) {                break;            }            int i = 0;            int batchSize = numIids.size() / THREADPOOLSIZE;            if (numIids.size() > THREADPOOLSIZE) {                for (i = 0; i < THREADPOOLSIZE; i++) {                    List<Long> subList = numIids.subList(i * batchSize, ((i + 1) * batchSize));                    es.submit(() -> {                        try {                            compute(batchId, subList);                        } catch (Exception e) {                            e.printStackTrace();                        }                    });                }            }            if (i * batchSize < numIids.size()) {                List<Long> subList = numIids.subList(i * batchSize, numIids.size());                es.submit(() -> {                    try {                        compute(batchId, subList);                    } catch (Exception e) {                        e.printStackTrace();                    }                });            }            我想在这里实现等待上面所有子线程完成所有任务,然后向下执行(不关闭线程池中的线程,让这些线程重复使用)        }        es.shutdown();        awaitTerminationQuietly(es);        }
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

可以使用 java.util.concurrent.CountDownLatch 这个类


查看完整回答
反对 回复 2019-04-18
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

看看invokeAll这个方法


查看完整回答
反对 回复 2019-04-18
  • 3 回答
  • 0 关注
  • 560 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信