SlaveThreadオブジェクトのリストを保持するマスターがあるとします。各ステップでは、マスターがSlaveThreadsを同時に実行するようにしますが、タイムステップの最後に、SlaveThreadsが前進する前に現在のタイムステップを完了するまで待ちます。また、私は各時間ステップでSlaveThreadsを再インスタンス化したくありません。私は2つの可能な解決法があり、どちらかを動作させる方法がわかりません:1)SlaveThreadのrun()メソッドはwhile(真)ループにあります。 SlaveThreadでの単一ループの実行後に、私が持っているでしょうSlaveThreadは(私が方法がわからない)マスターに通知し、マスターは前Java - タイムステップごとに複数のスレッドを同期する
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()を呼び出すことができますか?
サウンズ/java/util/concurrent/CyclicBarrier.html(バリアント1を使用) – millimoose