JAVA多线程之JUC——CountDownLatch

首先,JUC:java.util.concurrent包

1、CountDownLatch:

  Latch闭锁的意思,是一种同步的工具类。类似于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭着的,不允许任何线程通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。且当门打开了,就永远保持打开状态。

  作用:可以用来确保某些活动直到其他活动都完成后才继续执行。

  使用场景:

  1、例如我们上例中所有人都到达饭店然后吃饭;

  2、某个操作需要的资源初始化完毕

  3、某个服务依赖的线程全部开启等等...

  CountDowmLatch是一种灵活的闭锁实现,包含一个计数器,该计算器初始化为一个正数,表示需要等待事件的数量。countDown方法递减计数器,表示有一个事件发生,而await方法等待计数器到达0,表示所有需要等待的事情都已经完成。

  主要方法:

   public CountDownLatch(int count); //构造方法参数指定了计数的次数

   public void countDown(); //当前线程调用此方法,则计数减一

   public void await() throws InterruptedException //用此方法会一直阻塞当前线程,直到计时器的值为0

 

posted @ 2017-03-15 09:46  AlgorithmInit  阅读(216)  评论(0编辑  收藏  举报