等待 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
包含几万个元素。我应该使用另一种方法吗?我正在寻找尽可能简单的解决方案。