2015-05-03 89 views
0

我有兩個線程countDownLatch設置爲1,這樣,當第一個線程完成後第二個應該開始。我想要做的是,當第二個任務完成時,我想要從兩個線程計算得到的數據執行一些操作。如何知道鎖存器是否完成其任務

現在我的問題是,有什麼方法可以知道CountDownLatch對象是否完成了它的任務?

更新

是可以安全使用

while (latch.getcountDown()==0) { 
// do the calculations on the data processed by the two threads 
} 
+0

use thread.notify;你也可以使用http://www.tutorialspoint.com/java/lang/object_notifyall.htm鏈接參考 –

+0

@SaurabhJhunjhunwala你的意思是latch.notify ??你是否會提供 – user2121

+0

的示例a)目前還不清楚「完成任務」的含義? CountDownLatch不執行任何任務。 b)是否有理由不使用執行者和期貨?看起來像這樣的事情的完美工具。 –

回答

0

是當你的線程完成,並能說接受請求或者特定的任務,它呼籲鎖countDown方法。另一方面,在你的主線程(或你的協調器線程)中,阻塞等待閂鎖的方法。

現在,每當'x'個從屬線程完成其任務並調用countDown時,master知道相同的結果,並等待並進行進一步處理。

0

您是否嘗試過「加入」線程。而不是使用重型閂鎖連接可能會伎倆。

相關問題