最近开始拜读Java并发编程,鞭策下好久没有写博客的自己。
并发编程一直是编程中的重点,如何实现同步,线程的分配策略,线程池的使用都关系到程序的性能,对于多线程中的锁,信号量,同步机制等基础知识首先要打牢啊。
废话不多说,今天介绍同步辅助类:CountDownLatch
该类会使得某个线程(MainThread)等待其他线程(SubThread)发出一个信号,当所有线程(SubThread)都发出这个信号后,当前线程(MainThread)才能继续进行。
就是实现了一个条件等待。当然使用信号量也能够模拟这个过程。只是这里Java7 提供了一个便利的类实现了这个功能。
CountDownLatch cdl = new CountDownLatch(number) number指明MainThread 要等待多少个SubThread发出信号后才能继续进行。
CountDownLatch.await()是Mainhread等待SubThread发出信号告诉它已经OK
CountDownLatch.countDown()是SubThread发出信号,表示自己告诉MainThread,我这里已经OK啦。