我遇到了一个问题,希望各位高手能帮忙解决。
我正在设计一个多线程 Java 应用程序,我想在任何时候将生成的线程数限制为 5 个。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
有没有其他方法可以实现我想要做的事情?我做了一些研究,没有什么完全符合要求的。
提前致谢,埃德蒙