java高并发包之shutdown()和shutdownNow()的区别
解决方法:
1.shutdown()的作用是使当前未执行完的线程继续执行,而不再添加新的任务Task,而线程池会继续运行直到所有任务执行完才会停止。
2.方法shutdownNow()的作用是中断所有的任务Task,返回值是List<Runnable>,List对象存储的是还未运行的任务,也就是被取消掉的任务。
分两种情况:
第一种就是如果在线程代码中使用以下代码,则就中断了正在执行的任务,且抛出InterruptedException异常;还有一种情况就是如果没在线程代码中使用以下代码,则池中正在运行的线程直到执行完毕,而未执行的线程不再执行,也从执行队列中清除。
if (Thread.currentThread().isInterrupted() ==true) {
throw new InterruptedException();
}