問題が発生しました。グルが助けてくれることを願っています。
一度に生成されるスレッドの数を 5 に制限したいマルチスレッド Java アプリケーションを設計しています。main() プログラムは一時停止し、スレッドがプールから利用可能になるまで待機してから、プロセスを再開する必要があります。
現時点で私が思いついたのは次のとおりですが、アクティブなスレッドの数を検出する方法はあまり正確ではないようです。
これを行う別の方法があるかどうか疑問に思っています。
ExecutorService pool = Executors.newFixedThreadPool(5);
for(int i=0; i<10000; i++){
System.out.println("current number of threads: "+((ThreadPoolExecutor)pool).getActiveCount());
while(true){
if (((ThreadPoolExecutor)pool).getActiveCount() < 5)
break;
Thread.sleep(TimeUnit.SECONDS.toMillis(1));
System.out.println("waiting ..... "+((ThreadPoolExecutor)pool).getActiveCount());
}
Runnable sampleThread = new SampleThread(100);
pool.submit(sampleThread );
}
**************************************************
** Output:
**************************************************
current number of threads: 0
current number of threads: 1
current number of threads: 1
current number of threads: 1
current number of threads: 1
私がやろうとしていることを達成する別の方法はありますか? 私はいくつかの調査を行いましたが、法案に完全に適合するものはありません。
前もってありがとう、エドモンド