并发工具类——CountDownLatch

一般叫法'闭锁'。

使用方式:一个或者多个线程等待其他的线程执行countDown()方法,知道执行countDown()和new CountDownLatch(10)次数一下,在执行。

首先设置闭锁的个数

CountDownLatch latch = new CountDownLatch(10);

然后在方法内执行latch.countDown(),相当于10-1。直到执行10次countDown(),才能让latch.await()继续执行后面的方法。

countDown()和await()在任何地方都是可以调用的。

场景:当一个主线程需要其他的线程执行完他需要的需求,然后在继续执行下面的代码。不需要其他线程全部执行完以后,只要其他线程执行countDown()即可。

 

简单的DEMO

 1     private final static CountDownLatch latch = new CountDownLatch(4);
 2 
 3     public static class UseInit implements Runnable{
 4         @Override
 5         public void run() {
 6             latch.countDown();
 7             System.out.println("执行完countDown,执行减1操作");
 8         }
 9     }
10 
11     public static class UseThread implements Runnable{
12         @Override
13         public void run() {
14             try {
15                 latch.await();
16             }catch (Exception e){
17                 e.printStackTrace();
18             }
19             System.out.println("执行完全部的countDown");;
20         }
21     }
22 
23     public static void main(String[] args) {
24         System.out.println("main方法开始执行!!!");
25         new Thread(new UseThread()).start();
26         for (int i=0;i<10;i++){
27             new Thread(new UseInit()).start();
28         }
29     }

执行结果:

 

posted @ 2019-06-06 11:03  陌然浅笑  阅读(134)  评论(0)    收藏  举报