Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定线程池已完成所有作业?_Java_Multithreading_Threadpool - Fatal编程技术网

Java 如何确定线程池已完成所有作业?

Java 如何确定线程池已完成所有作业?,java,multithreading,threadpool,Java,Multithreading,Threadpool,我从这个问题中得到了帮助 但这并不能解决我的问题。也许在某些方面我错了 for (ReadProcess_MongoDB readData : readProcessMongoObj) executor.execute((Runnable) readData); executor.shutdown(); executor.awaitTermination(1, TimeUnit.MINUTES); } catch (Interr

我从这个问题中得到了帮助

<>

但这并不能解决我的问题。也许在某些方面我错了

for (ReadProcess_MongoDB readData : readProcessMongoObj)
           executor.execute((Runnable) readData);
    executor.shutdown();
    executor.awaitTermination(1, TimeUnit.MINUTES);     
    } 
    catch (InterruptedException e) {
    //Log exception here
    } finally {

    executor.shutdownNow();
    printTime();
    }
public void printTime()
{
  for(int i=0;i<numberOfThreads;i++) 
        System.err.println("used Time "+timeArrObj[i]);

}
for(ReadProcess\u MongoDB readData:readProcessMongoObj)
executor.execute((Runnable)readData);
executor.shutdown();
执行人。等待终止(1,时间单位。分钟);
} 
捕捉(中断异常e){
//此处记录异常
}最后{
执行者。关机现在();
打印时间();
}
公共无效打印时间()
{

对于(int i=0;i这是由于打印输出时线程交错造成的。我猜提交给executor的任务不够长,无法阻止WaitTermination方法,executor立即关闭,这反过来又在finally block中调用printTime()方法


在waitTermination()方法调用之后添加Thread.sleep()可以提供一个延迟,使您获得所需的输出。

这里的一个常见解决方案是使用。当然,如果您知道有多少任务,它就可以正常工作。 如果您不知道可以尝试的任务数量(并且感觉像cpt.Kirk)。
此解决方案更灵活。

您是否尝试过参考资料中提到的完成服务?我在您的示例中没有看到