作用:它允许一个或是多个线程等待其他的线程完成工作以后再执行。
countDown():一个线程完成以后,调用这个方法,事件计数器减一。
await() :阻塞当前线程,直到计数器为0,即所有事件完成。
import java.util.concurrent.CountDownLatch; /** * CountDownLatch的使用 */ public class UseCountDownLatch { static CountDownLatch latch = new CountDownLatch(3); //初始化线程 private static class InitThread implements Runnable{ @Override public void run() { System.out.println("Thread_"+Thread.currentThread().getId() +" ready init work !"); latch.countDown();//初始化线程完成工作了,countDown方法只扣减一次; for(int i = 0;i < 2; i++) { System.out.println("Thread_"+Thread.currentThread().getId() +" continue do its work !"); } } } public static void main(String[] args) throws InterruptedException { for(int i=0; i < 3; i++){ Thread thread = new Thread(new InitThread()); thread.start(); } latch.await(); System.out.println("Main do its work !"); } }