当我像在public static void main
方法中那样运行主线程时,该线程在方法完成时终止。我没有做任何明确的事情来关闭线程。为什么在ExecutorService
的情况下。我们有一个shutdown()方法?为什么我们不能让ExecutorService
管理的线程运行到完成?
关闭方法的调用只意味着执行器不会接受任何新任务。您可以给提交给执行器的正在运行的任务(运行到完成)一个超时。
executor.shutdown();
try {
//blocks until all tasks have finished or timeout occurs
executor.awaitTermination(TimeUnit.MICROSECONDS , Long.MAX_VALUE);
} catch (InterruptedException e) {
//Take some action at least Thread.currentThread().interrupt();
}