Tüm görevlerin ExecutorService
bitmesini 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();
}
ComputeDTask
runnable 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ı.
uniquePhrases
on 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