Java线程同步之CountDownLatch

jdk的concurrent包中的CountDownLatch类是一个线程同步的辅助类,它使得线程可以一直等待在其它线程中执行的操作,直到此操作结束。CountDownLatch在初始化的时候指定一个大小值N,调用CountDownLatch的await方法的线程会陷入等待之中,直到这个CountDownLatch对象的countDown方法被调用N次为止,无论是在一个线程中调用N次,还是在N个线程中被调用一次。只有这个对应的CountDownLatch对象的countDown方法总被调用次数为N次之后,这个等待的线程才能继续往下执行。

其原理也容易理解,初始化的时候指定要等待的计数的次数,每调用一次countDown就对这个计数减一,直到计数被减到0,等待的线程就可以继续运行了。

2、await

CountDownLatch的await方法会使得当前线程进入等待状态,直到最新的一次计数被减到0为止。如果当前的计数已经是0了,那么这个方法会马上返回。这个函数有个代参的重载函数,可以设置一个最长的等待时长。在等待时长内,如果计数器被减到0,这个函数会返回true,或者达到等待时长,这个函数会返回false。(被中断情况下抛异常)

3、countDown

使计数减一,初始化的计数不能重新设定,只能通过countDown来对计数减一

相关阅读:

Java Hashtable多线程操作遍历问题

Java多线程顺序执行

Java多线程问题之同步器CyclicBarrier

Java多线程之wait()和notify()

Java多线程之synchronized

Java多线程之并发锁

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/13e9565cadcecab6bcd457be06c1104e.html