假设我有某种线程池。我向它提交了一个线程,它继续前进。我想阻塞主线程,直到池为空/所有线程都完成,最好不要忙着等待。
但是线程可以创建自己的线程并将其添加到池中(事先未知的数量)......所以重要的是池可以在主线程阻塞时继续正常接受和处理线程。上下文无关紧要:我正在执行图形搜索。
我找到了很多几乎解决方案:
- Executors 可以等待线程完成,但不允许添加新线程。
- CountDownLatch 非常接近,但在创建新线程时不能递增。
同样,这个主题也有很多线程,但它们都涉及预先知道正在创建多少线程的程序。实际上,我觉得奇怪的是,这是一个不经常(或根本不)问的问题!