线程:CountDownLatch同步工具

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

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

 

posted @ 2014-05-02 12:25  楪夕  阅读(192)  评论(0编辑  收藏  举报