多线程之主线程等待多线程

来源:互联网 发布:清新网站引导页源码 编辑:程序博客网 时间:2024/06/08 21:33

通过CountDownLatch来控制

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() + "开始...");        // Do somethings        threadsSignal.countDown();// 线程结束时计数器减1        System.out.println(Thread.currentThread().getName() + "结束. 还有"                + threadsSignal.getCount() + " 个线程");    }}
import java.util.Iterator;import java.util.concurrent.CountDownLatch;public class TestThread {    public static void main(String[] args) {        int threadNum=5;        CountDownLatch threadSignal = new CountDownLatch(threadNum);//初始化countDown        for (int ii = 0; ii < threadNum; ii++) {//开threadNum个线程            Thread t = new ImportThread(threadSignal);            t.start();        }        try {            threadSignal.await();        } catch (InterruptedException e) {            e.printStackTrace();        }//等待所有子线程执行完        System.out.println(Thread.currentThread().getName() + "结束.");//打印结束标记    }}
0 0