java.util.concurrent.CyclicBarrier
2015-11-25 15:46
459 查看
/* * 一组线程相互等待,直到最后一个线程执行完某一阶段任务后,他们才会一起向下执行。 * */ public class CyclicBarrierDemo { public static void main(String[] args) { final CyclicBarrier cb = new CyclicBarrier(3); System.out.println("出发..."); for (int i = 0; i < 3; i++) { new Thread(new Runnable() { @Override public void run() { try { TimeUnit.SECONDS.sleep(new Random().nextInt(5)+1); System.out.println(Thread.currentThread().getName()+":到达山顶了。。。"); cb.await(); System.out.println(); TimeUnit.SECONDS.sleep(new Random().nextInt(5)+1); System.out.println(Thread.currentThread().getName()+":吃完饭了。。。"); cb.await(); System.out.println(); TimeUnit.SECONDS.sleep(new Random().nextInt(5)+1); System.out.println(Thread.currentThread().getName()+":唱完歌了。。。"); cb.await(); System.out.println("回家"); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } } }).start(); } } }
出发... Thread-0:到达山顶了。。。 Thread-1:到达山顶了。。。 Thread-2:到达山顶了。。。 Thread-0:吃完饭了。。。 Thread-2:吃完饭了。。。 Thread-1:吃完饭了。。。 Thread-1:唱完歌了。。。 Thread-0:唱完歌了。。。 Thread-2:唱完歌了。。。 回家 回家 回家
相关文章推荐
- 学习struts2 (1)
- java.util.concurrent.CountDownLatch
- Java集合---ArrayList的实现原理
- java学习笔记--java第一课,java入门基础篇
- Spring MVC 教程,快速入门,深入分析
- eclipse jad 反编译 插件安装
- 解决eclipse内存溢出
- spring mvc写XML的时候出现过的问题
- SSH框架学习(三、在struts基础上加入spring)
- springmvc 类对象新的理解
- 第一天开通博客,写点什么
- Java变量初始化流程及其中的一些问题
- 通过Java代码设置layout_weight
- Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包
- 35 个 Java 代码性能优化总结
- SSH框架学习(四、struts+spring搭建,spring注解注入)
- eclipse报错:This Android SDK requires Android Developer Toolkit version 23.0.0 or above.
- java中对象的克隆
- eclipse中如何对jar包关联的源代码进行调试?
- 阅读优秀的JAVA模板引擎Beetl的使用说明有感