该类主要实现了:让一个线程等待其他线程完成后再执行的功能,好比Thread.join()

    该类的初始化需要一个整数值count,当每次调用CountDownLatch.countDown()时Count会递减。直到count降到0时,所有执行CountDownLatch.await()的方法都会返回。

    初始化了一个共享变量latch,并赋予count为3

    1. CountDownLatch latch = new CountDownLatch(3);

    创建一个任务,睡眠1秒模拟执行任务,最后执行countDown

    1. @Override
    2. public void run() throw InterruptedException{
    3. System.out.println("执行任务...");
    4. Thread.sleep(1000);
    5. latch.countDown();
    6. }

    主线程里执行如下方法

    // 调用3个线程执行上述的任务
    ...
    latch.await();
    System.out.println("执行结束")
    

    当三个任务线程全部执行完latch.countDown()时,main线程就会从阻塞的await()中返回,最后输出”执行结束”。
    注意:CountDownLatch 只能使用一次,下一次使用要重新创建一个。