Я использую ExecutorService
для выполнения задачи. Эта задача может рекурсивно создавать другие задачи, отправленные на тот же ExecutorService
, и эти дочерние задачи тоже могут это делать.
Теперь у меня проблема с тем, что я хочу подождать, пока все задачи будут выполнены (то есть все задачи завершены, и они не отправили новые), прежде чем я продолжу.
Я не могу вызвать ExecutorService.shutdown()
в главном потоке, потому что это препятствует принятию новых задач ExecutorService
.
И Вызов ExecutorService.awaitTermination()
, кажется, ничего не делает, если shutdown
не был вызван.
Так что я как бы застрял здесь. 1015 * не может быть так сложно увидеть, что все рабочие бездействуют, не так ли? Единственное неуместное решение, которое я мог придумать, - это напрямую использовать ThreadPoolExecutor
и периодически запрашивать его getPoolSize()
. Неужели нет лучшего способа сделать это?