Java ExecutorService: waititTermination de todas as tarefas criadas recursivamente

Eu uso umExecutorService para executar uma tarefa. Essa tarefa pode criar recursivamente outras tarefas que são enviadas para a mesmaExecutorService e essas tarefas filho também podem fazer isso.

Agora tenho o problema que quero aguardar até que todas as tarefas sejam concluídas (ou seja, todas as tarefas sejam concluídas e não tenham enviado novas) antes de continuar.

Eu não consigo chamarExecutorService.shutdown() no encadeamento principal porque isso impede que novas tarefas sejam aceitas peloExecutorService.

E chamandoExecutorService.awaitTermination() parece não fazer nada seshutdown não foi chamado.

Então, eu estou meio preso aqui. Não pode ser tão difícil para oExecutorService ver que todos os trabalhadores estão ociosos, pode? A única solução deselegante que eu poderia encontrar é usar diretamente umThreadPoolExecutor e consultar suagetPoolSize() de vez em quando. Realmente não há maneira melhor de fazer isso?

questionAnswers(10)

yourAnswerToTheQuestion