【JAVA并发编程专题】CountDownLatch的理解与使用

一、简介

CountDownLatch提供了和join一样的功能,可以允许一个线程等待其它线程操作完成之后再进行操作。

CountDownLatch在使用的时候需要接受一个int类型的参数作为计数器,需要等待的线程调用await方法就会进入等待状态,被等待的线程每一次调用countDown方法时,计数器就会减1,直至为0的时候,等待线程就能继续执行了。

需要注意的是,计数器必须大于等于0,如果等于0的话,等待线程在调用await的时候并不会进入等待状态。

二、使用实例

public static void main(String[] args) throws InterruptedException {
    
    
    CountDownLatch countDownLatch = new CountDownLatch(2);

    Thread thread = new Thread(new Runnable() {
    
    
        @Override
        public void run() {
    
    
            log.info("子线程执行开始...");
            countDownLatch.countDown();
            log.info("子线程休眠...");
            try {
    
    
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
    
    
                e.printStackTrace();
            }
            log.info("子线程休眠结束");
            countDownLatch.countDown();
        }
    });

    thread.start();
    log.info("主线程执行完了,等待子线程...");
    countDownLatch.await();
    log.info("主线程等待子线程结束");
}

猜你喜欢

转载自blog.csdn.net/weixin_42469135/article/details/125106239