CyblicBarrier使用
来源:互联网 发布:学生网络诈骗案例分析 编辑:程序博客网 时间:2024/06/07 15:53
闲话少说直接上demo
package com.ilucky.test.jdk.util.concurrent;import java.util.Date;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** * n个线程互相等待, 任何一个线程完成之前, 所有的线程都必须等待. * CyclicBarrier更像一个水闸, 线程执行就想水流, 在水闸处都会堵住, 等到水满(线程到齐)了, 才开始泄流. * * CountDownLatch和CylicBarrier的区别: http://blog.csdn.net/kjfcpua/article/details/7300286 * @author IluckySi * */public class CyclicBarrierTest { public static void main(String[] args) { CyclicBarrier cb = new CyclicBarrier(3); new CyclicBarrierTestT1(cb).start(); new CyclicBarrierTestT2(cb).start(); new CyclicBarrierTestT3(cb).start(); }}class CyclicBarrierTestT1 extends Thread { private CyclicBarrier cb; CyclicBarrierTestT1(CyclicBarrier cb) { this.cb = cb; } public void run() { try { Thread.sleep(1000); cb.await(); } catch (BrokenBarrierException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(new Date() + "name =" + Thread.currentThread().getName()); }}class CyclicBarrierTestT2 extends Thread { private CyclicBarrier cb; CyclicBarrierTestT2(CyclicBarrier cb) { this.cb = cb; } public void run() { try { Thread.sleep(2000); cb.await(); } catch (BrokenBarrierException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(new Date() + "name =" + Thread.currentThread().getName()); }}class CyclicBarrierTestT3 extends Thread { private CyclicBarrier cb; CyclicBarrierTestT3(CyclicBarrier cb) { this.cb = cb; } public void run() { try { Thread.sleep(5000); cb.await(); } catch (BrokenBarrierException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(new Date() + "name =" + Thread.currentThread().getName()); }}/**Thu May 11 10:45:54 GMT+08:00 2017name =Thread-1Thu May 11 10:45:54 GMT+08:00 2017name =Thread-0Thu May 11 10:45:54 GMT+08:00 2017name =Thread-2*/
观察运行结果
0 0
- CyblicBarrier使用
- CyblicBarrier使用之BrokenBarrierException
- 使用
- 使用
- 使用
- 使用
- 使用
- 使用
- 使用++,--
- 使用$@ $!
- 使用
- SoftICE使用(指令使用)
- 使用GraphEdit使用
- 使用HtmlParser使用心得
- 时钟使用使用
- Ubuntu 使用Git 使用
- Ubuntu 使用Git 使用
- GUID使用的使用
- 电力变压器企业黄页
- 多元化邮件插图成鲜活生命力,助力邮件营销转化!
- httpclient上传文件实例
- HashSet,HashMap这些集合的toString方法拼成字符串竟然有空格,坑死我了。
- JAVA开发之 15-JAVA标识符
- CyblicBarrier使用
- 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
- 25个沙盘工作坊,深度解密亿级用户产品背后的研发管理实践
- 第八届山东省赛题 J company (贪心,水)
- ReactNative打发布包流程(Android)
- 快速排序(Quick Sort) Java实现
- GPU CPU NPU
- .net mvc5 (一)
- nginx虚拟机配置