zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

JAVA并发编程 理解 专题 CountDownLatch 使用
2023-09-11 14:21:23 时间

一、简介

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("主线程等待子线程结束");
}