Je dois soumettre un certain nombre de tâches et les attendre jusqu'à ce que tous les résultats soient disponibles. Chacun d'entre eux ajoute un String
à un Vector
(qui est synchronisé par défaut). Ensuite, je dois commencer une nouvelle tâche pour chaque résultat dans le vecteur, mais je dois le faire uniquement lorsque toutes les tâches précédentes ont cessé de faire leur travail. Je veux utiliser Java Executor, en particulier j'ai essayé d'utiliser Executors.newFixedThreadPool(100)
afin d'utiliser un nombre fixe de thread (j'ai un nombre variable de tâches qui peut être de 10 ou 500) mais je suis nouveau avec les exécuteurs et moi Je ne sais pas comment attendre la fin d'une tâche. Ce est quelque chose comme un pseudo-code de ce que mon programme doit faire:Exécuteurs Java: attente de la fin de la tâche.
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>
}
Je ne peux pas faire e.shutdown parce que je suis dans un certain temps (vrai) et je dois réutiliser le executorService
..
Pouvez-vous m'aider? Pouvez-vous me suggérer un guide/livre sur les exécuteurs java?
Jetez un oeil à http://stackoverflow.com/questions/1228433/java-parallel-work-iterator/1228445 – Tim