正文
一、简介
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("主线程等待子线程结束"); }