Java newFixedThreadPool活动线程数

Java newFixedThreadPool活动线程数,java,multithreading,Java,Multithreading,我有一个问题,这是我的代码片段 executor = Executors.newFixedThreadPool(10); int count = 0; while(true){ if(count < 10){ runner = new Runner(); futures.add(executor.submit(runner)); count++; } else{ count = 0;

我有一个问题,这是我的代码片段

executor = Executors.newFixedThreadPool(10);

int count = 0;

while(true){
    if(count < 10){
        runner = new Runner();
        futures.add(executor.submit(runner));
        count++;
    }
    else{
        count = 0;
        for(f:futures){
            while(!f.isDone()){sleep(1000);}
        }
        executor.shutdown();
        executor = Executors.newFixedThreadPool(10);
    }
}

我看到该进程有数千个线程,cpu负载不断增加。有什么解释吗?

您在哪里关闭了执行器服务?如果您不这样做,那么这绝对不奇怪……我猜您多次调用此代码,并且在调用之间不关闭执行器。当然,你每次都应该重复使用同一个执行器。我实际上已经尝试过关机。。。如果问题出在关机上,请让我尝试确保关机已完成。为什么等待和执行器终止在循环内完成?您对
ExecutorService
API的使用是错误的。阅读由于未知原因,您正在创建
ExecutorService
的新实例。由于未知原因,您没有使用
invokeAll
。出于某种未知的原因,您正在嵌套循环中使用
sleep
,而不是阻塞。总之,我看不出这段代码有一行是正确的。甚至格式也是错误的。
ps -eLf  | grep pid | wc -l