1.CyclicBarrier介绍
与 CountDownLatch相反的 CyclicBarrier是做加法,例如集齐7颗龙珠才可以召唤神龙,少一个龙珠都会失败
2.上代码案例演示
package com.concurrent;
import java.util.concurrent.CyclicBarrier;
/**
*
*/
public class CyclicBarrierDemo {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(7, () -> {
System.out.println("集齐龙珠召唤神龙");
});
for (int i = 1; i <= 7; i++) {
final int temp = i;
new Thread(() -> {
System.out.println(Thread.currentThread().getName() + "\t 集齐到+" + temp + "颗龙珠");
try {
cyclicBarrier.await();
} catch (Exception e) {
e.printStackTrace();
}
}, String.valueOf(i)).start();
}
}
}
代码输出结果:
1 集齐到+1颗龙珠
3 集齐到+3颗龙珠
4 集齐到+4颗龙珠
2 集齐到+2颗龙珠
5 集齐到+5颗龙珠
6 集齐到+6颗龙珠
7 集齐到+7颗龙珠
集齐龙珠召唤神龙