CountDownLatch笔记

CountDownLatch容许一个或多个线程一直等待,直到其余线程的操做执行完后再执行;CountDownLatch是经过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了本身的任务后,计数器的值就会减1。当计数器值到达0时,它表示全部的线程已经完成了任务,而后在闭锁上等待的线程就能够恢复执行任务。ide

public class CountDownLatchDemo {
    static CountDownLatch countDownLatch=new CountDownLatch(3);
    public static class task implements  Runnable{
        @Override
        public void run() {
            try {
                Thread.sleep(1000);//模拟耗时
                System.out.println(Thread.currentThread().getName()+"准备完成");
                countDownLatch.countDown();//表示该任务已完成,计数器减一
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) {
        ExecutorService executorService= Executors.newFixedThreadPool(3);
        for(int i=0;i<3;i++){
            executorService.submit(new task());
        }
        try {
            countDownLatch.await();//等待子线程都完成才能执行
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("火箭发射");
    }
}
执行结果以下
pool-1-thread-3准备完成
pool-1-thread-1准备完成
pool-1-thread-2准备完成
火箭发射

解析:模拟火箭发射,必须等三个线程跑完才能执行主线程;线程

相关文章
相关标签/搜索