J'utilise un ExecutorService
pour exécuter une tâche. Cette tâche de manière récursive peut créer d'autres tâches qui sont soumis à la même ExecutorService
et ceux de l'enfant tâches peuvent aussi le faire.
J'ai maintenant le problème que je veux attendre jusqu'à ce que toutes les tâches sont effectuées (qui est, toutes les tâches sont terminées et ils n'ont pas à soumettre de nouvelles) avant de continuer.
Je ne peux pas appeler ExecutorService.shutdown()
dans le thread principal, car cela empêche de nouvelles tâches d'être accepté par l' ExecutorService
.
Et en Appelant ExecutorService.awaitTermination()
semble ne rien faire si shutdown
n'a pas été appelée.
Donc je suis un peu coincé ici. Il ne peut pas être si difficile que ça pour l' ExecutorService
de voir que tous les travailleurs sont en veille, peut-il? La seule solution peu élégante que je pouvais venir est d'utiliser directement un ThreadPoolExecutor
de requête et de ses getPoolSize()
à chaque fois dans un tout. Il n'y a vraiment pas de meilleure façon de faire cela?