在谈Java并发CountDownLatch与CyclicBarrier区别
CountDownLatch和CyclicBarrier都是控制并发而生,都在java.util.concurrent包下。 CountDownLatch 简单称为计数器,适合1个或者多个线程等待其他线程执行完毕后自己开始执行。其中最主要的方法是await和countDown,调用await()的线程如果CountDownLatch内部count变量不为0,则一直阻塞,直到为0,并且可以有多个线程调用await(),也就是多个线程同时等待。 下面的例子先创建两个线程,一直等待,然后启动10个线程对CountDownLatch进行减少。10次countDown()后,前两个线程才可以运行。 public class Main2 { static CountDownLatch countDownLatch = new CountDownLatch ( 10 ) ; public static void main ( String [ ] args ) throws InterruptedException { for ( int i = 0 ; i < 2 ; i ++ ) { new Thread ( ( ) - > { try { System . out . println ( Thread . currentThread ( ) + " start" ) ;