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

ExecutorService,如何等待所有任务完成

ExecutorService,如何等待所有任务完成

BIG阳 2019-07-15 10:45:08
ExecutorService,如何等待所有任务完成等待所有任务的最简单的方法是什么?ExecutorService完成?我的任务主要是计算性的,所以我只想运行大量的任务-每个核心上都有一个。现在,我的设置如下:ExecutorService es = Executors.newFixedThreadPool(2);for (DataTable singleTable : uniquePhrases) {        es.execute(new ComputeDTask(singleTable));}try{     es.wait();} catch (InterruptedException e){     e.printStackTrace();}ComputeDTask实现可运行。这似乎正确地执行了任务,但是代码崩溃了。wait()带着IllegalMonitorStateException..这是很奇怪的,因为我玩了一些玩具的例子,它似乎是可行的。uniquePhrases包含数万个元素。我应该用另一种方法吗?我在寻找尽可能简单的东西
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

如果要等待所有任务完成,请使用shutdown方法而不是wait..然后跟着它awaitTermination.

另外,你也可以用Runtime.availableProcessors以获取硬件线程数,以便正确初始化线程池


查看完整回答
反对 回复 2019-07-15
  • 3 回答
  • 0 关注
  • 2064 浏览

添加回答

举报

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