What is the simplest way to to wait for all tasks of ExecutorService to finish? My task is primarily computational, so I just want to run a large number of jobs - one on each core. Right now my setup looks like this:
ExecutorService es = Executors.newFixedThreadPool(2);
for (DataTable singleTable : uniquePhrases)
{
es.execute(new ComputeDTask(singleTable));
}
try
{
es.wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
ComputeDTask implements runnable. This appears to execute the tasks correctly, but the code crashes on wait() with IllegalMonitorStateException. This is odd, because I played around with some toy examples and it appeared to work.
uniquePhrases contains several tens of thousands of elements. Should I be using another method? I am looking for something as simple as possible