方法一:

Thread.join()方法,亲测可行,thread.join()方法

[java] view plain copy
  1. Vector<Thread> ts = new Vector<Thread>();
  2. for (int i = 0; i < 200; i++) {
  3. Thread t = new Thread(new Runnable() {
  4. @Override
  5. public void run() {
  6. Counter.inc();
  7. }
  8. });
  9. ts.add(t);
  10. t.start();
  11. }
  12. for (Thread t : ts) {
  13. try {
  14. t.join();
  15. } catch (InterruptedException e) {
  16. // TODO Auto-generated catch block
  17. e.printStackTrace();
  18. }
  19. }
  20. System.out.println("----------" + Counter.count);

(全部代码见上一篇文章)

这个循环中的join的意思是:子线程排好队,欢迎新同学main线程,main线程对着排好队的他们说,我站你后边,我站你后边,我站你后边。。。。(ts.size()次)。然后站到最后一个的后面了。恩、

方法二:

用线程池。

代码:

[java] view plain copy
  1. ExecutorService threadPool = Executors.newScheduledThreadPool(10);
  2. ExecutorService threadPool = Executors.newCachedThreadPool();
  3. for (int i = 0; i < 200; i++) {
  4. threadPool.execute(new Runnable() {
  5. @Override
  6. public void run() {
  7. chi.inc();
  8. }
  9. });
  10. }
  11. threadPool.shutdownNow();
  12. try {
  13. threadPool.awaitTermination(3, TimeUnit.MICROSECONDS);
  14. } catch (InterruptedException e) {
  15. e.printStackTrace();
  16. }
  17. System.out.println("------" + chi.count);

Executors是个工厂,(工厂模式),创建出几种不同类别的线程池。这里我用ScheduledThreadPool。(因为好使,注释掉的那种不知为什么不管用)。

然后用shutdownNow(),这个方法是马上停止(试图)正在执行的任务,线程池进入STOP状态,不再开启正在等待的线程。

对比的,shutdown()方法是阻止等待中的进程开启,等待所有正在执行的进程完成。

转载于:https://www.cnblogs.com/panxuejun/p/7811105.html

Java主线程等待所有子线程执行完毕再执行解决办法(转)相关推荐

  1. java主线程等待所有子线程执行完毕再执行

    java主线程等待所有子线程执行完毕在执行,这个需求其实我们在工作中经常会用到,比如用户下单一个产品,后台会做一系列的处理,为了提高效率,每个处理都可以用一个线程来执行,所有处理完成了之后才会返回给用 ...

  2. Java多线程、主线程等待所有子线程执行完毕、共享资源

    1.Java创建与启动线程 Java提供两种方式创建和启动线程:1.直接Thread类,2.实现Runable接口. 1.1  继承Thread类 public class myThread exte ...

  3. java 父线程_Java父线程(或是主线程)等待所有子线程退出的实例

    导读热词 实例如下: static void testLock1(){ final AtomicInteger waitCount = new AtomicInteger(30000); final ...

  4. 主线程等待所有子线程结束的4种方法

    目录 主线程不等待子线程全部结束 1.使用CountDownLatch 2.同步屏障CyclicBarrier 2.1.CyclicBarrier使用 2.2.CyclicBarrier复用 2.3. ...

  5. python 主程序等待 子线程_Python多线程中主线程等待所有子线程结束的方法

    Python多线程中主线程等待所有子线程结束的方法 发布时间:2020-07-30 14:39:04 来源:亿速云 阅读:77 作者:小猪 这篇文章主要讲解了Python多线程中主线程等待所有子线程结 ...

  6. 线程池如何保证所有子线程运行完再执行主线程

    Java主线程等待所有子线程执行完毕在执行,其实在我们的工作中经常的用到,比如说主线程要返回一个响应用户的值,但这个值得赋值过程是由过个子线程来完成的(模拟一个实际开发的情景),所以主线程必须等待子线 ...

  7. 如何实现java主线程等待子线程执行完毕之后再执行?

    本文转自:问题:如何实现java主线程等待子线程执行完毕之后再执行? - jseven - 博客园 点击关注强哥,查看更多精彩文章呀 工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完 ...

  8. Java主线程等待子线程、线程池

    public class TestThread extends Thread { public void run() { System.out.println(this.getName() + &qu ...

  9. Thread:主线程等待子线程执行完毕再执行解决办法

    线程从启动到执行完毕,一般会有一些耗时操作,并不能像一般的程序语句,就能立马结束.如下代码: package com.xxx.async; public class WaitThreadDone {p ...

最新文章

  1. 关于移动CRM的学习(一)
  2. python语言有什么用-为什么现在很多人都使用Python语言有什么优势
  3. Spring boot+Spring Security 4配置整合实例
  4. Jenkins构建自动化任务
  5. 【图像处理】——上采样、下采样、在模板匹配中的金字塔加速策略
  6. SQL-ALTER-change和modify区别
  7. 皕杰报表和炎黄盈动(AWS BPM)集成 操作手册
  8. json文件解析工具_JSON格式的文本文件,怎么解析不成功?
  9. 【干货】奢侈品线上消费圈层洞察-阿里妈妈.pdf(附下载链接)
  10. 昔年浅谈化工平台网站怎么吸引客户咨询入驻呢?
  11. JSK-27321 统计单词数【字符串】
  12. 解决webpack5打包html中图片后图片无法显示问题
  13. 使用javascript下载网络图片
  14. python全系列官方中文文档
  15. GD32F303xx 使用 jlink-segger功能
  16. 14届数独-真题标准数独-Day 4-20220119
  17. HTML基础-跟着李南江学编程
  18. 图像质量评估---FID
  19. 利用手机距离感应器来切换扬声器和听筒播放
  20. SAP资产负债表实现方案探索 - 基于 VBA 自定义函数方法

热门文章

  1. AngularJs的UI组件ui-Bootstrap分享(六)——Tabs
  2. delphi中等待外部应用程序执行完成后,再继续执行自有代码段
  3. 亚马逊AWS在线系列讲座——基于AWS云平台的高可用应用设计
  4. 红茶一杯话Binder(传输机制篇_上)
  5. Tomcat 启动错误 org/eclipse/jdt/debug/core/JDIDebug...
  6. vue中动态渲染组件
  7. C++基础——类继承
  8. fork() 成为负担,需要淘汰
  9. CSS题目系列(1) - 可滚动的Table
  10. FactoryMethod工厂方法模式升级成AbstractFactory抽象工厂模式