并发工具类——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 }
执行结果:


浙公网安备 33010602011771号