该类主要实现了:让一个线程等待其他线程完成后再执行的功能,好比Thread.join()
。
该类的初始化需要一个整数值count,当每次调用CountDownLatch.countDown()
时Count会递减。直到count降到0时,所有执行CountDownLatch.await()
的方法都会返回。
初始化了一个共享变量latch,并赋予count为3
CountDownLatch latch = new CountDownLatch(3);
创建一个任务,睡眠1秒模拟执行任务,最后执行countDown
@Override
public void run() throw InterruptedException{
System.out.println("执行任务...");
Thread.sleep(1000);
latch.countDown();
}
主线程里执行如下方法
// 调用3个线程执行上述的任务
...
latch.await();
System.out.println("执行结束")
当三个任务线程全部执行完latch.countDown()时,main线程就会从阻塞的await()中返回,最后输出”执行结束”。
注意:CountDownLatch 只能使用一次,下一次使用要重新创建一个。