读书人

CyclicBarrier 例证

发布时间: 2012-08-24 10:00:21 作者: rapoo

CyclicBarrier 例子

import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** *  * @author Administrator *这里的parties也是一个计数器, *例如,初始化时parties里的计数是3, *于是拥有该CyclicBarrier对象的线程当parties的计数为3时就唤醒 *,注:这里parties里的计数在运行时当调用CyclicBarrier:await()时,计数就加1,一直加到初始的值 */public class TestCyclicBar{  /** 用于提交任务的线程池*/    private final ExecutorService pool;    public TestCyclicBar(){  pool=Executors.newCachedThreadPool();    }  /** * 玩家类 * @author Administrator * */class Player implements Runnable{private String playNm;private final CyclicBarrier cyclicBarrier;public Player(CyclicBarrier cyclicBarrier,String playNm){this.cyclicBarrier=cyclicBarrier;this.playNm=playNm;}public void run(){try {System.out.println(playNm+" 正在玩第一关");cyclicBarrier.await();System.out.println(playNm+" 进入第二关");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} }}public void service(){ CyclicBarrier cyclicBarrier = new CyclicBarrier(4, new Runnable() {   public void run() {   System.out.println("所有玩家进入第二关!");   }});    for (int i = 0; i < 4; i++) {  Player p=  new Player(cyclicBarrier,"玩家"+i);  pool.submit(p);  }}public static void main(String[] args) {TestCyclicBar t=new TestCyclicBar();t.service();}} 

读书人网 >编程

热点推荐