这篇文章,主要介绍多线程中CountDownLatch的使用。
目录
CountDownLatch是JDK提供的一个多线程间通信的类,该类位于【java.util.concurrent】包下,CountDownLatch主要用于一个线程需要等待另一个线程执行完成之后,才可以继续执行的场景里面。
CountDownLatch底层是基于AQS(抽象队列同步器)实现的,它的基本原理大致如下所示:
- 创建CountDownLatch对象的时候,指定一个线程数量,此时内部会维护一个state计数器,用于表示线程的数量。
- 这个时候,自己就可以创建一些子线程处理相应的业务逻辑。
- 主线程调用CountDownLatch类的【await()】方法,进入阻塞状态,此时会等待子线程执行完成。
- 子线程执行完成之后,主动调用【countDown()