2 つのスレッドを生成し、CyclicBarrier クラスを使用してそれらが同期するのを待つコードを書いています。問題は、循環バリアが期待どおりに機能せず、メイン スレッドが個々のスレッドの終了を待機しないことです。私のコードは次のようになります。
class mythread extends Thread{
CyclicBarrier barrier;
public mythread(CyclicBarrier barrier) {
this.barrier = barrier;
}
public void run(){
barrier.await();
}
}
class MainClass{
public void spawnAndWait(){
CyclicBarrier barrier = new CyclicBarrier(2);
mythread thread1 = new mythread(barrier).start();
mythread thread2 = new mythread(barrier).start();
System.out.println("Should wait till both threads finish executing before printing this");
}
}
私が間違っていることは何ですか?または、これらのバリア同期メソッドを記述するより良い方法はありますか? 助けてください。