Devo inviare un numero di attività e quindi attendere fino a quando tutti i risultati sono disponibili. Ognuno di essi aggiunge uno String
a Vector
(che è sincronizzato per impostazione predefinita). Quindi ho bisogno di iniziare una nuova attività per ogni risultato in Vector, ma devo farlo solo quando tutte le attività precedenti hanno smesso di fare il loro lavoro.Esecutori Java: attendere la chiusura dell'attività.
Voglio utilizzare Java Executor, in particolare ho provato a utilizzare Executors.newFixedThreadPool(100)
per utilizzare un numero fisso di thread (ho un numero variabile di attività che può essere 10 o 500) ma sono nuovo con gli esecutori e io non so come aspettare la fine dell'attività. Questo è qualcosa come un pseudocodice di ciò che il mio programma ha bisogno di fare:
ExecutorService e = Executors.newFixedThreadPool(100);
while(true){
/*do something*/
for(...){
<start task>
}
<wait for all task termination>
for each String in result{
<start task>
}
<wait for all task termination>
}
non posso fare un e.shutdown perché sono in un po '(vero) e ho bisogno di riutilizzare il executorService
..
Potete aiutarmi? Puoi suggerirmi una guida/un libro sugli esecutori java?
Dai un'occhiata a http://stackoverflow.com/questions/1228433/java-parallel-work-iterator/1228445 – Tim