一句话解释:预备~~~开始
1 import java.util.concurrent.BrokenBarrierException;
2 import java.util.concurrent.CyclicBarrier;
3
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6
7 public class CyclicBarrierLearn {
8
9 private Logger log = LoggerFactory.getLogger(CyclicBarrierLearn.class);
10
11 private class Work extends Thread {
12
13 private String name;
14 private CyclicBarrier cyclicBarrier;
15
16 public Work(String name, CyclicBarrier cyclicBarrier) {
17 this.name = name;
18 this.cyclicBarrier = cyclicBarrier;
19 }
20
21 @Override
22 public void run() {
23 try {
24 log.debug("thread name: " + name + " waiting work");
25 cyclicBarrier.await();
26 log.debug("thread name: " + name + " working");
27 } catch (InterruptedException e) {
28 e.printStackTrace();
29 } catch (BrokenBarrierException e) {
30 e.printStackTrace();
31 }
32
33 }
34 }
35
36 public void cyclicBarrier() {
37 CyclicBarrier cyclicBarrier = new CyclicBarrier(50, new Runnable() {
38
39 @Override
40 public void run() {
41 log.debug("let's begin work");
42 }
43 });
44
45 for (int i = 0; i < cyclicBarrier.getParties(); i++) {
46 Work work = new Work(String.valueOf(i), cyclicBarrier);
47 work.start();
48 }
49
50 }
51
52 public static void main(String[] args) {
53 CyclicBarrierLearn cyclicBarrierLearn = new CyclicBarrierLearn();
54 cyclicBarrierLearn.cyclicBarrier();
55
56 }
57
58 }
59