ExecutorService对象的shutdown()和shutdownNow()的区别
来源:互联网 发布:免费交朋友软件 编辑:程序博客网 时间:2024/05/16 09:18
可以关闭 ExecutorService,这将导致其拒绝新任务。提供两个方法来关闭 ExecutorService。shutdown() 方法在终止前允许执行以前提交的任务,而 shutdownNow() 方法阻止等待任务启动并试图停止当前正在执行的任务。在终止时,执行程序没有任务在执行,也没有任务在等待执行,并且无法提交新任务。应该关闭未使用的 ExecutorService 以允许回收其资源。
下列方法分两个阶段关闭 ExecutorService。第一阶段调用 shutdown 拒绝传入任务,然后调用 shutdownNow(如有必要)取消所有遗留的任务:
- void shutdownAndAwaitTermination(ExecutorService pool) {
- pool.shutdown(); // Disable new tasks from being submitted
- try {
- // Wait a while for existing tasks to terminate
- if (!pool.awaitTermination(60, TimeUnit.SECONDS)) {
- pool.shutdownNow(); // Cancel currently executing tasks
- // Wait a while for tasks to respond to being cancelled
- if (!pool.awaitTermination(60, TimeUnit.SECONDS))
- System.err.println(”Pool did not terminate”);
- }
- } catch (InterruptedException ie) {
- // (Re-)Cancel if current thread also interrupted
- pool.shutdownNow();
- // Preserve interrupt status
- Thread.currentThread().interrupt();
- }
- }
void shutdownAndAwaitTermination(ExecutorService pool) { pool.shutdown(); // Disable new tasks from being submitted try { // Wait a while for existing tasks to terminate if (!pool.awaitTermination(60, TimeUnit.SECONDS)) { pool.shutdownNow(); // Cancel currently executing tasks // Wait a while for tasks to respond to being cancelled if (!pool.awaitTermination(60, TimeUnit.SECONDS)) System.err.println("Pool did not terminate"); } } catch (InterruptedException ie) { // (Re-)Cancel if current thread also interrupted pool.shutdownNow(); // Preserve interrupt status Thread.currentThread().interrupt(); } }
shutdown调用后,不可以再submit新的task,已经submit的将继续执行。
shutdownNow试图停止当前正执行的task,并返回尚未执行的task的list
阅读全文
0 0
- ExecutorService对象的shutdown()和shutdownNow()的区别
- ExecutorService对象的shutdown()和shutdownNow()的区别
- ExecutorService对象的shutdown()和shutdownNow()的区别
- ExecutorService对象的shutdown()和shutdownNow()的区别
- ExecutorService对象的shutdown()和shutdownNow()的区别
- shutdown和shutdownNow的区别
- 线程服务ExecutorService的操作shutdown方法和shutdownNow方法
- ThreadPoolExecutor的shutDown和shutDownNow的区别
- JAVA线程池shutdown和shutdownNow的区别
- JAVA线程池shutdown和shutdownNow的区别
- JAVA线程池shutdown和shutdownNow的区别
- JAVA线程池shutdown和shutdownNow的区别
- JAVA线程池shutdown和shutdownNow的区别
- threadPoolExecutor 中的 shutdown() 、 shutdownNow() 、 awaitTermination() 的用法和区别
- JAVA线程池shutdown和shutdownNow的区别
- JAVA线程池shutdown和shutdownNow的区别
- JAVA线程池shutdown和shutdownNow的区别
- ThreadPoolExecutor 的 shutdown() 和shutdownNow()
- js实现鼠标吸附粒子效果和星璇效果
- ipconfig不是内部命令或外部命令
- .Net WebService 创建时的出现的问题
- 获取DTP跑的request ID
- 不用 sysadmin 权限,普通账户访问EXCEL文件
- ExecutorService对象的shutdown()和shutdownNow()的区别
- spring中注入属性文件中的值
- 性能测试
- 个人信用,你了解多少?
- Redis的数据类型
- maven学习笔记(一) maven简介以及安装
- sewise视频直播
- numpy的求模模块 linalg在范数运算中的应用
- 学习记录---颤抖吧,hadoop!(三)----搭建伪分布式