だから私は仕事で一日をシミュレートするこのプログラムに取り組んでおり、各ワーカーは独自のスレッドです。労働者が会議に出席する会議を実施しようとしていますが、会議に出席することになっている全員が到着するまで会議は開始されません。だから私は会議に出席するためのこの方法を持っています。
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を拡張するEmployeeクラスのインスタンスであるworkerパラメーターとthis.cdStartはCountDownLatchです。ただし、4人の従業員の会議でこれを実行すると、1人の従業員だけが参加してカウントをデクリメントし、await()呼び出しをヒットできるように見えます。他のワーカースレッドはどれもそれを入力できないようです。オンラインでの使用例の多くが、CountDownLockオブジェクトをスレッド自体に渡して処理することに気づきました。これが代わりに機能しない理由はありますか?