CountDownLatch是线程的计数器,举一个实际场景来介绍计数器的使用:
有2个人工作,2个人都做完了,这份工作才算结束,这个场景用java实现怎么做?
一种方式是加一个全局变量,A线程完成给变量减一,B线程结束也给变量减一,变量初始值为2.当前变量为0,就是2个线程结束的时候,而这个java提供了CountDownLatch。
CountDownLatch就是一个相对于所有线程的全局变量,用来阻塞线程的。
public static void main(String[] args){
ExecutorService pool = Executor.newFixedThreadPool(2);
CountDownLatch latch = new CountDownLatch(2);
pool.execute(new Runnable(){
System.out.println("工作1结束");
latch.countDown();
});
pool.execute(new Runnable(){
System.out.println("工作2结束");
latch.countDown();
latch.await();
System.out.println("2个工作都结束了 !");
}