Java CountDownLatch

CountDownLatchJava并发包中用于并发编程的同步辅助类。用于允许一个或多个线程等待其他线程中一组操作执行完成,在其他线程中的这组操作执行完成之前,等待的线程将阻塞无法继续执行;或者等待的时间到了才能继续执行;或者等待的线程被中断。

 

CountDownLatch构造:

public CountDownLatch(int count)

在构造CountDownLatch需要传入一个count down的次数。CountDownLatch将使用java.util.concurrent.CountDownLatch.Sync进行同步控制。java.util.concurrent.CountDownLatch.Sync使用AQS状态来表示这个count downAQS状态可参考java.util.concurrent.locks.AbstractQueuedSynchronizer
 

 

countDown方法:

 

public void countDown()

调用该方法将将count down1,直到为0后,阻塞在await方法的地方就能继续执行。

 

await方法:

public void await() throws InterruptedException

调用该方法后,当前线程将被阻塞,直到count down数被减到0后或者当前线程被中断才能继续执行。

 

public boolean await(long timeout, TimeUnit unit) throws InterruptedException

调用该方法后,当前线程将被阻塞,直到count down数被减到0后或者当前线程被中断或者等待的时间到了才能继续执行。

 

猜你喜欢

转载自lobin.iteye.com/blog/2326332