需要澄清以下行为。了解java执行程序服务关闭并等待终止
我有Java应用程序与java.util.concurrent.ExecutorService
如下,
for (int i = 0; i < thread_count; i++) {
Runnable worker = new MyThread(batchSize);
executor.execute(worker);
}
executor.shutdown();
executor.awaitTermination(15, TimeUnit.MINUTES);
System.out.println("All threads are finished");
在上述代码中,我有5个线程和那些被在10分钟内完成,并且它将执行System.out.println("All threads are finished")
,偶数虽然executor.awaitTermination(15, TimeUnit.MINUTES)
具有15分钟等待时间。
但是,当我删除executor.shutdown()
程序将等待15分钟,这是executor.awaitTermination(15, TimeUnit.MINUTES)
语句中指定的,在执行下一行之前。
任何人都可以解释这种行为吗?为什么不使用shutdown命令会等待指定的时间长度?所有线程都完成了吗?
请经常阅读,并试图了解的JavaDoc您正在使用的所有方法。 – 2014-10-28 09:30:24
在await Termination中的“终止”是指线程池的终止,而不是任务的终止,因为这主要是考虑到一个新的任务可以随时出现的场景。 – lbalazscs 2014-10-28 13:21:04