私は、wait()、notify()、notifyAll()、Thread.run()、synhronized などのプリミティブな Java 同時実行構造を使用するプロジェクトに取り組んでいます。私のプロジェクトには、複数のスレッド (Thread クラスの拡張) があります。 ) 定期的にキューからオブジェクトを取得します。したがって、内部 TimerTask クラスを持つ Timer クラスを使用します。
私の問題は、他のスレッドを定期的に起動する方法を取得できなかったことです。私のメイン クラスは、これらのスレッドやタイマー クラスではありません。したがって、別のクラスから実行を呼び出します。これらのスレッドを待機させ、100 ミリ秒ごとに 1 回通知する方法がわかりませんでした。私のタイマークラスは次のとおりです。
public class Controller extends Timer{
int counter;
TimerTask task;
final Controller c = this;
public class PeriodicTime extends TimerTask {
@Override
public void run() {
if(counter > 0) {
//do some stuff to wake up threads
}
counter++;
}
}
Controller () {
super ();
this.task = new PeriodicTime();
counter = 0;
this.schedule(task, 300, 100);
}
}
そして、私のスレッドクラスは次のとおりです。
public class Element extends Thread {
public void run() {
// do something to get an object from another class (a queue)
}
}
今、スレッドクラスに定期的にリリースする方法を本当に混乱させています。wait()/notify() を使用するかどうかさえわかりませんでした。
前に言ったように、複数の Element クラスを作成します。それらは同期して動作します。じゃあどうすればいいの?