-
CyclicBarrier
CyclicBarrier 的字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事是:让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程达到屏障时,屏障开放行,所有被放行的线程才会继续任务,线程进入屏障通过CyclicBarrier 的await()方法。 -
CyclicBarrier demo
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 tempInt = i;
new Thread(() -> {
System.out.println(Thread.currentThread().getName() + "\t 收集到第 " +tempInt + "龙珠");
try {
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
},String.valueOf(i)).start();
}
}
// 代码执行效果
7 收集到第 7龙珠
6 收集到第 6龙珠
5 收集到第 5龙珠
1 收集到第 1龙珠
3 收集到第 3龙珠
4 收集到第 4龙珠
2 收集到第 2龙珠
**********召唤神龙