SlaveThread オブジェクトのリストを保持する Master があるとします。タイム ステップごとに、Master が SlaveThreads を並行して実行するようにしたいのですが、タイム ステップの最後に、SlaveThreads が互いに現在のタイム ステップを完了するのを待ってから先に進むようにします。また、各時間ステップで SlaveThreads を再インスタンス化したくありません。考えられる解決策は 2 つありますが、どちらも機能させる方法がわかりません。
1) SlaveThread の run() メソッドが while(true) ループ内にある。SlaveThread で 1 つのループを実行した後、SlaveThread に Master に通知してもらい (どうすればよいかわかりません)、Master は次のようなことを行います。
try{
for (int i = 0; i < numSlaveThreads; i++) {
while (!slaveThreads[i].getCompletedThisIter()) {
wait()
}
}
System.out.println("Joined");
}
次の時間ステップに進む前に。どうすればいいですか?単一の SlaveThread でマスターだけに通知するにはどうすればよいですか?
2) Slave の run() は while(true) ループにないため、反復ごとに start() を呼び出す必要があります。ただし、この時点でのスレーブのスレッド状態は終了します。再インスタンス化せずに start() を再度呼び出すにはどうすればよいですか?