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颗龙珠
集齐龙珠召唤神龙
本文介绍了CyclicBarrier的概念,它与CountDownLatch不同,它用于同步多个线程,直到所有线程都达到屏障点才能继续执行。通过一个集齐7颗龙珠召唤神龙的代码案例,展示了CyclicBarrier如何确保所有线程完成特定任务后一起执行后续操作。
1134

被折叠的 条评论
为什么被折叠?



