如何确定当前在ExecutorService
中运行的活动线程的数量
发布于 2008-09-17 07:30:37
使用ThreadPoolExecutor实现并对其调用getActiveCount():
int getActiveCount()
// Returns the approximate number of threads that are actively executing tasks.
ExecutorService接口没有提供这样的方法,它取决于实现。
发布于 2013-09-02 07:30:20
假设ExecutorService实例的名称为pool
:
if (pool instanceof ThreadPoolExecutor) {
System.out.println(
"Pool size is now " +
((ThreadPoolExecutor) pool).getActiveCount()
);
}
发布于 2008-09-17 07:34:34
检查Executors.newFixedThreadPool()
的源代码
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
ThreadPoolExecutor有一个getActiveCount()方法。因此,您可以将ExecutorService强制转换为ThreadPoolExecutor,或者直接使用上面的代码来获得一个。然后,您可以调用getActiveCount()
。
https://stackoverflow.com/questions/80787
复制相似问题