所以我正在研究這個模擬一天工作的程序,每個工人都是自己的線程。我試圖在員工參加會議的地方實施會議,但會議直到會議開始時纔會開始。所以我有參加會議的這種方法。Java的CountDownLatch可以從被動類而不是線程中使用嗎?
public void attendMeeting(Employee worker){
this.cdStart.countDown();
worker.meetingWait();
try {
this.cdStart.await();
worker.meetingStart(this.length);
if(this.attendees.get(0).equals(worker)){
this.room.exit();
} // end if
} // end try
catch (InterruptedException err) {
// Do Nothing
} // end catch
} // end method attendMeeting
工人蔘數是擴展Thread和this.cdStart是CountDownLatch Employee類的實例。但是,當通過四名員工開會時,只有一名員工似乎能夠進入,減少計數,然後執行await()調用。沒有其他工作線程似乎能夠輸入它。我注意到很多在線的使用示例都將CountDownLock對象傳遞給線程本身來處理。有沒有原因爲什麼這不會起作用呢?
是什麼worker.meetingWait()呢? – 2012-04-18 16:42:46
我有一個主要負責員工班級的隊友,並提到他希望在整個會議期間更新員工狀態,包括員工是否真正參加活動會議或只是在等待。這就是meetingWait()和meetingStart()方法的用處。 – 2012-04-18 18:21:03