cyclicBarrier与countDownLatch相反
countDownLatch是从初始值减到0
cyclicBarrier是从0加到初始值
cyclicBarrier先到的线程先进行等待,只有达到parties的个数,就可以执行构造的方法
构造器:
1.public CyclicBarrier(int parties, Runnable barrierAction)
public CyclicBarrier(int parties, () ->{
System.out.println("最后执行的方法");
})
2.public CyclicBarrier(int parties)
编写cyclicBarrier的实例
package com.example.demo.Test;
import com.example.demo.enums.CountryEnum;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
/**
* 测试CyclicBarrier
*/
public class CyclicBarrierTest {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(4, () -> {
System.out.println("满足有的条件最后进行的操作");
});
for(int i = 1 ; i < 5 ; i++){
new Thread(()->{
try {
System.out.println(Thread.currentThread().getName()+" 等待全部条件全部满足");
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}, CountryEnum.getEnum(String.valueOf(i))).start();
}
}
}