啓動了多個工作線程,需要通知他們停止。由於某些線程在下一輪工作之前會休眠一段時間,因此需要一種即使在睡覺時也能通知它們的方式。更好的方式來通知其他線程停止?
如果是Windows編程,我可以使用事件和等待功能。在Java中,我使用的CountDownLatch對象,指望這樣做是1。它的工作原理,但並不感到優雅,尤其是我要檢查計數值,看看是否需要退出:
run(){
while(countDownLatch.count()>0){
//working
// ...
countDownLatch.wait(60,TimeUnit.SECONDS);
}
}
信號燈是另一個選擇,但也不覺得很正確。我想知道有沒有更好的方法來做到這一點?謝謝。
這是不太你正在尋找的答案,但你應該使用線程池(java.util.concurrent中)。我幾乎可以肯定他們可以做你想做的事情,而且他們沒有bug,你可以利用你的時間來開發其他事情。 – toto2
你想停止所有的線程,還是隻想停止一些? – Moonbeam
@Moonbeam我需要單獨阻止它們,所以線程池似乎不是一個可行的解決方案。 – HourseArmor