一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
类似计数器,当计数器的值为0时,继续往下执行。
1 package ch03; 2 3 import java.util.Random; 4 import java.util.concurrent.CountDownLatch; 5 import java.util.concurrent.ExecutorService; 6 import java.util.concurrent.Executors; 7 8 public class CountDownLatchTest { 9 10 public static void main(String[] args) { 11 ExecutorService threadPool = Executors.newCachedThreadPool(); 12 //初始值设置为2 13 final CountDownLatch latch = new CountDownLatch(2); 14 for(int i=0; i<2; i++){ 15 Runnable runnable = new Runnable() { 16 17 @Override 18 public void run() { 19 try { 20 Thread.sleep(new Random().nextInt(6000)); 21 System.out.println("子线程执行。。。"); 22 //计数器自减 23 latch.countDown(); 24 } catch (Exception e) { 25 e.printStackTrace(); 26 } 27 } 28 }; 29 threadPool.execute(runnable); 30 } 31 32 try { 33 //等待计数器自减到0,然后再往下执行。 34 latch.await(); 35 } catch (InterruptedException e) { 36 e.printStackTrace(); 37 } 38 System.out.println("主线程...."); 39 } 40 41 }