package com.aegeanworkjp.gold;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
<span style="white-space:pre"> </span>//创建CyclicBarrier容器数量(大小)和容器满时要进行处理的Runnable对象(<span style="font-family: Arial, Helvetica, sans-serif;">MixedDoubleTennisGame</span>)
CyclicBarrier barrier=new CyclicBarrier(4,new MixedDoubleTennisGame());
new player(barrier, "wang");
new player(barrier, "lee");
new player(barrier, "zhang");
new player(barrier, "chen");
}
}
class player extends Thread{
CyclicBarrier waitPoint;
private String name;
public player(CyclicBarrier waitPoint,String name) {
this.waitPoint = waitPoint;
this.name=name;
this.start();
}
public void run() {
System.out.println("The player:"+this.name+" ready!");
try {
<span style="white-space:pre"> </span>//等待其他进程进入
waitPoint.await();
<span style="white-space:pre"> </span>//其他进程都已经结束
<span style="white-space:pre"></span><p style="margin-top: 0px; margin-bottom: 0px; font-size: 11px; line-height: normal; font-family: Monaco;"><span style="white-space:pre"> </span> System.<span style="color: rgb(3, 38, 204);">out</span>.println(<span style="color: #931a68">this</span>.<span style="color: #0326cc">name</span>+<span style="color: #3933ff">"等待结束"</span>);</p> } catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BrokenBarrierException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MixedDoubleTennisGame implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("All four player ready!");
}
}
输出结果