Java 如何判断线程池所有任务是否执行完毕
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 如何判断线程池所有任务是否执行完毕,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1535字,纯文字阅读大概需要3分钟。
内容图文
![Java 如何判断线程池所有任务是否执行完毕](/upload/InfoBanner/zyjiaocheng/1331/24afaa21a00c4696b5bd5d413a73f637.jpg)
shutdown
void shutdown()
- 启动一次顺序关闭,执行以前提交的任务,但不接受新任务。如果已经关闭,则调用没有其他作用。
-
-
- 抛出:
-
SecurityException
- 如果安全管理器存在并且关闭,此 ExecutorService 可能操作某些不允许调用者修改的线程(因为它没有保持RuntimePermission("modifyThread")),或者安全管理器的 checkAccess 方法拒绝访问。
isTerminated
boolean isTerminated()
- 如果关闭后所有任务都已完成,则返回 true。注意,除非首先调用 shutdown 或 shutdownNow,否则 isTerminated 永不为 true。
-
-
- 返回:
- 如果关闭后所有任务都已完成,则返回 true
/**
* 采用线程池开启多个子线程,主线程等待所有的子线程执行完毕 */ public static void moreThread() { try { int threadNum = 0; for (int i = 0; i < 10; i++) { threadNum++; final int currentThreadNum = threadNum; exe.execute(new Runnable() { @Override public void run() { try { System.out.println("子线程[" + currentThreadNum + "]开启"); Thread.sleep(1000*10); } catch (InterruptedException e) { e.printStackTrace(); }finally{ System.out.println("子线程[" + currentThreadNum + "]结束"); } } }); } System.out.println("已经开启所有的子线程"); exe.shutdown(); System.out.println("shutdown():启动一次顺序关闭,执行以前提交的任务,但不接受新任务。"); while(true){ if(exe.isTerminated()){ System.out.println("所有的子线程都结束了!"); break; } Thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); }finally{ System.out.println("主线程结束"); } }
子线程[1]开启 子线程[6]开启 子线程[2]开启 子线程[5]开启 子线程[9]开启 已经开启所有的子线程 子线程[3]开启 子线程[7]开启 子线程[10]开启 shutdown():启动一次顺序关闭,执行以前提交的任务,但不接受新任务。 子线程[4]开启 子线程[8]开启 子线程[6]结束 子线程[3]结束 子线程[7]结束 子线程[2]结束 子线程[1]结束 子线程[5]结束 子线程[9]结束 子线程[4]结束 子线程[10]结束 子线程[8]结束 所有的子线程都结束了! 主线程结束
借鉴文章地址:
http://blog.csdn.net/truong/article/details/40227435 原文地址
原文:http://blog.csdn.net/lisheng19870305/article/details/44747741
内容总结
以上是互联网集市为您收集整理的Java 如何判断线程池所有任务是否执行完毕全部内容,希望文章能够帮你解决Java 如何判断线程池所有任务是否执行完毕所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。