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

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包含数万个元素。我应该用另一种方法吗?我在寻找尽可能简单的东西


BIG阳
浏览 2065回答 3
3回答

浮云间

如果要等待所有任务完成,请使用shutdown方法而不是wait..然后跟着它awaitTermination.另外,你也可以用Runtime.availableProcessors以获取硬件线程数,以便正确初始化线程池
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java