package com.jibx_maven;
import java.util.Random;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class BarrierTest {
public static void main(String[] args) {
CyclicBarrier barrier = new CyclicBarrier(4, new Runnable() {
@Override
public void run() {
System.out.println("ALL counting finished , starting summarizing ");
}
});
new Thread(new BarrierTask("beijing", barrier)).start();
new Thread(new BarrierTask("shanghai", barrier)).start();
new Thread(new BarrierTask("guangzhou", barrier)).start();
new Thread(new BarrierTask("shenzhen", barrier)).start();
}
}
class BarrierTask implements Runnable{
private String code;
private CyclicBarrier barrier ;
@Override
public void run() {
System.out.println(code+ " starting counting...........");
Random random = new Random();
try {
Thread.sleep(random.nextInt(20)*1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(code+ " finish counting...........");
try {
barrier.await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BrokenBarrierException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public BarrierTask(String code, CyclicBarrier barrier) {
super();
this.code = code;
this.barrier = barrier;
}
}
CyclicBarrier example
最新推荐文章于 2021-11-26 20:48:52 发布