等待所有任务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
包含数以万计的元素。我应该使用其他方法吗?我正在寻找尽可能简单的东西
es
当您要等待时,始终需要在对象上进行同步(在这种情况下)-等待时锁将自动释放