hooyantsing's Blog

16_CyclicBarrier

字数统计: 239阅读时长: 1 min
2020/08/26

16 CyclicBarrier

狂神说Java JUC并发编程最新版通俗易懂

多个线程到达预定代码位置,将执行 CyclicBarrier 构造器参数线程,之后多个线程再继续执行。

加法计数器

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package add;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

/**
* 多个线程到达预定代码位置,将执行 CyclicBarrier 构造器参数线程,之后多个线程再继续执行。
*/
public class CyclicBarrierDemo {
public static void main(String[] args) {
// 集齐 7 龙珠,召唤神龙
CyclicBarrier cyclicBarrier = new CyclicBarrier(7,() -> System.out.println("召唤神龙!"));

for (int i = 0; i < 7; i++) {
final int temp = i;
new Thread(
() -> {
System.out.println(Thread.currentThread().getName() + "收集第 " + temp + " 龙珠");
try {
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
// cyclicBarrier 通过 await 方法来计数,await之后当前线程会被阻塞,直到神龙召唤后才执行后面的代码
System.out.println("等待");
}
).start();
}
}
}
CATALOG
  1. 1. 16 CyclicBarrier
    1. 1.0.1. 案例