【发布时间】:2012-04-30 18:17:33
【问题描述】:
我有一些开发工作要做,我尝试看看是否有设计模式可以使用。 问题很简单:
我有一个启动许多线程的主线程。主线程必须等待每个线程完成,然后执行其他操作。 现有的代码有点难看。我有一个 while 循环来检查线程组以查看是否正在运行:
//launch threads
.....
//wait for threads to finish
while (ThreadRepository.getInstance().isActiveThreadGroup(myGroupId)) {
Thread.sleep(5000);
}
//doing something else
所以,如您所见,while 循环会一直运行,直到没有线程在运行。
我正在考虑模式生产者-消费者,我想做这样的事情:
例如使用一些 BlockingQueue,每个线程都会在其中放入(或获取)一些东西。
而不是有时间和睡眠,我想有类似的东西
myQueue.take() 但要等待队列为空。
为空时,表示没有线程在运行。
我尝试在 Internet 上搜索,但没有找到与我的问题相符的内容。
有谁知道解决我的问题最有效的方法吗?
【问题讨论】:
-
如果提前确定了广告数量,可以使用
CountDownLatch。 -
Marko,“不回报贡献者的青睐”是什么意思?
标签: java multithreading design-patterns