Tüm görevlerin ExecutorServicebitmesini beklemenin en basit yolu nedir ? Görevim öncelikle hesaplamalı, bu yüzden sadece çok sayıda iş yapmak istiyorum - her çekirdekte bir tane. Şu anda kurulumum şöyle görünüyor:
ExecutorService es = Executors.newFixedThreadPool(2);
for (DataTable singleTable : uniquePhrases) {
es.execute(new ComputeDTask(singleTable));
}
try{
es.wait();
}
catch (InterruptedException e){
e.printStackTrace();
}
ComputeDTaskrunnable uygular. Bu doğru görevleri yürütmek için görünür, ancak kod çöker wait()ile IllegalMonitorStateException. Bu tuhaf, çünkü bazı oyuncak örnekleriyle oynadım ve işe yaradı.
uniquePhraseson binlerce öğe içerir. Başka bir yöntem mi kullanmalıyım? Mümkün olduğunca basit bir şey arıyorum
Executors.newFixedThreadPool(System.getRuntime().availableProcessors());
es) - kilit beklerken otomatik olarak serbest bırakılır