一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

类似计数器,当计数器的值为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 }

 

相关文章:

  • 2019-10-08
  • 2021-10-20
  • 2021-12-30
  • 2018-07-13
  • 2019-12-03
  • 2022-01-09
  • 2021-09-02
  • 2021-08-14
猜你喜欢
  • 2021-06-12
  • 2021-11-05
  • 2019-06-28
  • 2021-08-20
  • 2021-08-06
  • 2021-11-07
  • 2022-01-16
相关资源
相似解决方案