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();
            }
        }
    }
  • 相关阅读:
    DataList控件部分使用方法
    评教系统——设计的重要性
    2010.7——2011.7年度总结
    Javascript初步
    asp.net天轰穿视频学习总结
    Datatable中对某列求和,三种不同情况下的方法
    DataTable删除多行
    C#语言的结构体布局
    geoserver、openlayers、PostgreSQL 开发环境配置
    字节流和结构体的转换[转]
  • 原文地址:https://www.cnblogs.com/shenbo-/p/9034378.html
Copyright © 2011-2022 走看看