所以我正在开发这个模拟一天工作的程序,每个工人都是自己的线程。我正在尝试实施工人参加会议的会议,但会议要等到应该参加会议的每个人都到达后才开始。所以我有这种参加会议的方法。
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
worker 参数是扩展 Thread 的 Employee 类的实例,this.cdStart 是 CountDownLatch。但是,在四名员工的会议上运行此程序时,似乎只有一名员工能够进入,减少计数,然后点击 await() 调用。其他工作线程似乎都无法进入它。我确实注意到许多在线使用示例将 CountDownLock 对象传递给线程本身来处理。有没有理由为什么这不起作用?