【发布时间】:2012-04-18 16:14:28
【问题描述】:
所以我正在开发这个模拟一天工作的程序,每个工人都是自己的线程。我正在尝试实施工人参加会议的会议,但会议直到应该参加会议的每个人都到达时才开始。所以我有这种参加会议的方法。
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 对象传递给线程本身来处理。有什么理由不这样做吗?
【问题讨论】:
-
worker.meetingWait() 是做什么的?
-
我有一个主要负责 Employee 类的队友,他提到他希望在整个会议期间更新 Employee 的状态,包括 Employee 是实际参加活动会议还是只是在等待。这就是 meetingWait() 和 meetingStart() 方法的用途。
标签: java concurrency countdownlatch