zoukankan      html  css  js  c++  java
  • 如何让主线程等待所有子线程执行完毕

    创建线程类 : 设置CountDownLatch成员变量,并且在run方法末尾调用CountDownLatch实例的CountDown()方法。

    调用该类: 设置所需工作的线程数量,作为构造参数生成线程实例对象,启动所有线程,调用CountDownLatch的await方法。

    // 创建一个线程 并设置成员变量 CountDownLatch
    package multi.thread;
    
    import java.util.concurrent.CountDownLatch;
    
    public class ImportThread extends Thread {
        private CountDownLatch threadsSignal;
        public ImportThread(CountDownLatch threadsSignal){
            this.threadsSignal = threadsSignal;
        }
        
        @Override
        public void run(){
            System.out.println(Thread.currentThread().getName()+" :: start...");
            // do something...
            threadsSignal.countDown(); // when the thread end the number will minus 1
            System.out.println(Thread.currentThread().getName() + "结束,还有" + threadsSignal.getCount() + " 个线程");
        }
        
    }
    package multi.thread;
    
    import java.util.concurrent.CountDownLatch;
    
    public class TestEnd {
        public static void main(String[] args) {
            int threadNum = 4;
            CountDownLatch threadSignal = new CountDownLatch(threadNum); // 初始化countDown
            for (int i = 0; i < threadNum; i++) {
                Thread t = new ImportThread(threadSignal);
                t.start();
            }
            try {
                threadSignal.await(); // 等待所有子线程完成
                System.out.println(Thread.currentThread().getName() + "结束...");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    git 强制覆盖本地
    给mysql添加账户并且赋予权限
    laravel 地址栏传参不了问题
    订单系统开发02
    熵——信息增益
    熵——导读
    熵——自信息
    tensorflow在文本处理中的使用——skip-gram & CBOW原理总结
    霍夫曼树
    tensorflow在文本处理中的使用——Word2Vec预测
  • 原文地址:https://www.cnblogs.com/shenbo-/p/9034378.html
Copyright © 2011-2022 走看看