그래서 저는 직장에서 하루를 시뮬레이션하는이 프로그램을 작업하고 있으며 각 작업자는 자체 스레드입니다. 나는 근로자가 회의에 참석하지만 회의에 참석해야하는 모든 사람이 도착할 때까지 회의가 시작되지 않는 회의를 구현하려고합니다. 그래서 회의에 참석하는 방법이 있습니다.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
worker 매개 변수는 Thread를 확장하는 Employee 클래스의 인스턴스이고 this.cdStart는 CountDownLatch입니다. 그러나 4 명의 직원과의 회의에서이 작업을 실행하면 단 한 명의 직원 만 들어 와서 카운트를 줄이고 await() 호출을 수행 할 수 있습니다. 다른 작업자 스레드 중 아무 것도 입력 할 수없는 것 같습니다. 나는 많은 온라인 예제를 사용하여 CountDownLock 객체를 스레드 자체에 전달하여 처리 할 수 있음을 확인했습니다. 이것이 대신 작동하지 않는 이유가 있습니까?
과 같을 것이다? –
저는 주로 Employee 클래스에 대한 책임이있는 팀원이 있습니다. 그리고 직원이 실제로 활성 미팅에 참석 중이거나 대기중인 경우를 포함하여 미팅 전반에 걸쳐 직원 상태를 업데이트하려고한다고 언급했습니다. 이것이 바로 meetingWait() 및 meetingStart() 메서드에 대한 것입니다. –