CountDownLatch是Java并发包中用于并发编程的同步辅助类。用于允许一个或多个线程等待其他线程中一组操作执行完成,在其他线程中的这组操作执行完成之前,等待的线程将阻塞无法继续执行;或者等待的时间到了才能继续执行;或者等待的线程被中断。
CountDownLatch构造:
public CountDownLatch(int count) |
在构造CountDownLatch需要传入一个count down的次数。CountDownLatch将使用java.util.concurrent.CountDownLatch.Sync进行同步控制。java.util.concurrent.CountDownLatch.Sync使用AQS状态来表示这个count down。AQS状态可参考java.util.concurrent.locks.AbstractQueuedSynchronizer
countDown方法:
public void countDown() |
调用该方法将将count down减1,直到为0后,阻塞在await方法的地方就能继续执行。
await方法:
扫描二维码关注公众号,回复:
575442 查看本文章
public void await() throws InterruptedException |
调用该方法后,当前线程将被阻塞,直到count down数被减到0后或者当前线程被中断才能继续执行。
public boolean await(long timeout, TimeUnit unit) throws InterruptedException |
调用该方法后,当前线程将被阻塞,直到count down数被减到0后或者当前线程被中断或者等待的时间到了才能继续执行。