CountDownLatch使用方法

CountDownLatch是一个同步辅助类,在完毕一组正在其它线程中运行的操作之前。它同意一个或多个线程一直等待。

如果我们周末要去旅游。出游前须要提前订好机票、巴士和酒店,都订好后就能够出发了。这个用代码怎么实现?能够用CountDownLatch。

主要方法

  • await(); // 使当前线程在锁存器倒计数至零之前一直等待
  • countDown(); // 递减锁存器的计数,如果计数到达零,则释放全部等待的线程

栗子

public static void main(String[] args) {
        ExecutorService executor=Executors.newFixedThreadPool(5);
        final CountDownLatch countDownLatch=new CountDownLatch(3);

        executor.execute(new Runnable(){
            public void run() {
                try{
                System.out.println("订机票");
                }finally{
                    countDownLatch.countDown();
                }
            }
        });
        executor.execute(new Runnable(){
            public void run() {
                try{
                System.out.println("订巴士");
                }finally{
                    countDownLatch.countDown();
                }
            }
        });
        executor.execute(new Runnable(){
            public void run() {
                try{
                System.out.println("订酒店");
                }finally{
                    countDownLatch.countDown();
                }
            }
        });

        try {
            countDownLatch.await();
            System.out.println("能够出发了");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
posted @ 2017-06-27 21:09  yfceshi  阅读(138)  评论(0编辑  收藏  举报