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();
            }
        }
    }
  • 相关阅读:
    k8s访问服务时,解析不了域名
    docker常用常用删除操作
    Linux_修改hosts
    java-深克隆和浅克隆
    Mybatis 中$与#的区别
    mysql-修改字段类型和修改字段名称
    HttpMessageNotReadableException(一)
    log4j2的环境变量使用
    Linux中修改环境变量及生效方法
    转!!mysql order by 中文排序
  • 原文地址:https://www.cnblogs.com/shenbo-/p/9034378.html
Copyright © 2011-2022 走看看