Javaスレッドについて学ぼうとすると、通常、まったく同じクラスのコード例に出くわしますwait()
(notify()
実際、ほとんどすべてのコード例は生産者/消費者の例です)。さまざまな例を調べた後、残念ながら、必要なケースを見つけることができませんでした。
- マネージャースレッドは、最初にn個のスレッドを作成し(そしてそれらを開始し)、そこでhttpget要求が単一のスレッドで実行されます。
- 単一のワーカースレッドの場合、その寿命を完了するのに約20〜30秒かかります。
- ここで、私のマネージャースレッドは、どのワーカーが終了したかを認識し、終了スレッドを新しいスレッドに置き換えます。
私はそのようなアプローチについて考えました(nを5とします):
List<Runnable> runnables = new ArrayList<Runnable>();
for(int i = 0 ; i < 5 ; i++){
runnables.add(new MyWorker(params));
}
for(Runnable myWorker : runnables){
myWorker.run();
}
wait()
複数のオブジェクトをサポートしていないので、ここから先に進むことはできません。別の解決策は、各ワーカーのisFinishedフラグを呼び出しているマネージャースレッドでビジーウェイトを実装することです。しかし、これが良いアプローチかどうかはわかりません(これがリソースの浪費であることがわかっている限り)