最近在使用ExecutorService的时候,对其关闭操作的概念非常模糊。查阅了许多文章、问答之后,有了一个总结。
shutdown:
1. 调用之后不允许继续往线程池内继续添加线程;
2. 线程池的状态变为SHUTDOWN状态;
3. 所有在调用shutdown()方法之前提交到ExecutorSrvice的任务都会执行;
4. 一旦所有线程结束执行当前任务,ExecutorService才会真正关闭。

shutdownNow():
1. 该方法返回尚未执行的task的List;
2. 线程池的状态变为STOP状态;
3. 阻止所有正在等待启动的任务,并且停止当前正在执行的任务;