我用a ExecutorService来执行任务.此任务可以递归地创建提交给它的其他任务,ExecutorService这些子任务也可以这样做.
我现在遇到的问题是,在我继续之前,我要等到所有任务完成(即所有任务都完成并且他们没有提交新任务).
我不能ExecutorService.shutdown()在主线程中调用,因为这可以防止新任务被接受ExecutorService.
ExecutorService.awaitTermination()如果shutdown没有被召唤,呼叫似乎什么都不做.
所以我有点卡在这里.ExecutorService要看到所有工人都闲着,这不是很难,是吗?我能想出的唯一不合理的解决方案是直接使用a ThreadPoolExecutor并getPoolSize()偶尔查询它.这样做真的没有更好的方法吗?