【发布时间】:2011-10-15 03:19:41
【问题描述】:
启动了几个工作线程,需要通知他们停止。由于某些线程会在下一轮工作之前休眠一段时间,因此需要一种即使在它们处于休眠状态时也能通知它们的方法。
如果是 Windows 编程,我可以使用事件和等待函数。在 Java 中,我使用计数为 1 的 CountDownLatch 对象来执行此操作。它可以工作但感觉不优雅,尤其是我必须检查计数值以查看是否需要退出:
run(){
while(countDownLatch.count()>0){
//working
// ...
countDownLatch.wait(60,TimeUnit.SECONDS);
}
}
Semaphore 是另一种选择,但也感觉不太对。我想知道有没有更好的方法来做到这一点?谢谢。
【问题讨论】:
-
这不是您正在寻找的答案,但您应该使用线程池 (java.util.concurrent)。我几乎可以肯定他们可以做你想做的事,而且没有错误,你可以利用你的时间来开发其他东西。
-
你想停止所有线程,还是只想停止几个?
-
@Moonbeam 我需要单独停止它们,所以线程池似乎不是一个可行的解决方案。
-
@HourseArmor,如果不是所有给出的答案都是合适的,那么大多数都是合适的。
标签: java