读书人

java.util.concurrent包探秘(1)之Cycl

发布时间: 2013-08-01 15:23:18 作者: rapoo

java.util.concurrent包探秘(一)之CyclicBarrier
package com.gw.concurrent;import java.io.IOException;import java.util.Random;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** *@author zcc *@date 2013-7-24 *@description *@version 1.0.0 */class Runner implements Runnable { private CyclicBarrier barrier; private String name; final Random random = new Random(); public Runner(CyclicBarrier barrier, String name) { super(); this.barrier = barrier; this.name = name; } @Override public void run() { try { Thread.sleep(1000 * random.nextInt(8)); System.out.println(name + " 准备就绪!"); barrier.await(); //在barrier中所有参与者调用wait方法之前,一直等待。 } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } } } public class TestCyclicBarrier { public static void main(String[] args) throws IOException, InterruptedException { CyclicBarrier barrier = new CyclicBarrier(3, new Runnable(){@Overridepublic void run(){System.out.println("都到齐了,准备出发");}}); ExecutorService executor = Executors.newFixedThreadPool(3); executor.submit(new Thread(new Runner(barrier, "zhangsan"))); executor.submit(new Thread(new Runner(barrier, "lisi"))); executor.submit(new Thread(new Runner(barrier, "wangwu"))); executor.shutdown(); } }

?

?

读书人网 >编程

热点推荐