shutdown方法用于停止线程池中的任务,但不会停止正在运行的任务;
shutdownNow方法作用类似,不同的是该方法会停止正在运行的方法。
public class shutdown {
public static void main(String[] args)
{
ExecutorService exo=Executors.newFixedThreadPool(10) ;
for(int i=0;i<=10;i++)
{
exo.submit(new Task(i));
}
exo.shutdown();
}
}
上面的代码就是创建了一个容量为10的线程池,创建了二十个任务,最后在结束线程池。
在shutdown方法中,线程池会被设定状态,此时无法在想线程池中加入任务。
如果此时向线程池中增加任务,会出现RejectedExecutionException异常。
而shutdownNow 方法中,正在执行的方法会被暂停,还未执行的方法会被退回,暂停任务的方法是通过Thread interrupt实现的。但这种方法的作用有限,如果线程中没有sleep 、wait、Condition、定时锁等应用, interrupt()方法是无法中断当前的线程的。