私は仕事で1日をシミュレートするこのプログラムに取り組んでおり、各作業者はそれぞれのスレッドです。私は、労働者が会議に出席する会議を実施しようとしていますが、会議に参加するはずの人が到着するまで会議は開始しません。だから、私はこの会議に出席する方法を持っています。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
スレッドを拡張しthis.cdStartがたCountDownLatchあるEmployeeクラスのインスタンスであるワーカー・パラメータ。しかし、これを4人の従業員の会議で実行すると、1人の従業員だけが入り込んでカウントを減らし、await()コールを打つことができます。他のワーカースレッドのどれもそれに入ることができないようです。私は、多くのオンライン使用例がCountDownLockオブジェクトをスレッド自体に渡して処理することに気付きました。これが代わりに機能しない理由はありますか?
のように見えるのでしょうか? –
私は、主にEmployeeクラスを担当するチームメイトを抱えており、従業員が実際にアクティブな会議に出席しているか待機しているかどうかを含めて、会議全体でEmployeeの状態を更新したいと述べました。これがmeetingWait()メソッドとmeetingStart()メソッドの目的です。 –