博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
并发包同步工具CyclicBarrier
阅读量:7103 次
发布时间:2019-06-28

本文共 2026 字,大约阅读时间需要 6 分钟。

/** *  * @描述: 同步工具 * 表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指点地点集合碰合 . * @作者: Wnj . * @创建时间: 2017年5月16日 . * @版本: 1.0 . */public class CyclicBarrierTest {        public static void main(String[] args) {        ExecutorService service = Executors.newCachedThreadPool();        //要有三个线程到了才走        final CyclicBarrier cb = new CyclicBarrier(3);        for (int i = 0; i < 3; i++) {            Runnable runnable = new Runnable() {                public void run() {                    try {                        Thread.sleep((long)(Math.random() * 10000));                                                                        System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点1,当前已有"                         + (cb.getNumberWaiting() + 1) + "个已经到达," + (cb.getNumberWaiting() == 2 ? "都到齐了,继续走啊" : "正在等候"));                        //三个线程的第N个线程等待                        cb.await();                                                Thread.sleep((long)(Math.random() * 10000));                        System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点2,当前已有"                         + (cb.getNumberWaiting() + 1)                            + "个已经到达," + (cb.getNumberWaiting() == 2 ? "都到齐了,继续走啊" : "正在等候"));                                                //三个线程的第N个线程等待                        cb.await();                        Thread.sleep((long)(Math.random() * 10000));                        System.out.println("线程" + Thread.currentThread().getName() + "即将到达集合地点3,当前已有"                        + (cb.getNumberWaiting() + 1)                            + "个已经到达," + (cb.getNumberWaiting() == 2 ? "都到齐了,继续走啊" : "正在等候"));                                                //三个线程的第N个线程等待                        cb.await();                    }                    catch (Exception e) {                        e.printStackTrace();                    }                }            };            service.execute(runnable);        }        service.shutdown();    }}

 

转载于:https://www.cnblogs.com/superGG/p/6902482.html

你可能感兴趣的文章
maildir 邮件文件名 记录
查看>>
在线模拟HTTP请求
查看>>
如何对压缩文件设置解压密码
查看>>
Linux运维学习之LNMP搭建"小米商城"
查看>>
#if #ifdef使用小记
查看>>
2.1/2.2系统目录结构 2.3 ls命令 2.4文件类型 2.5 alias命令
查看>>
KVM虚拟机管理程序(转)
查看>>
android中用Spannable在TextView中设置超链接、颜色、字体
查看>>
自定义BeanUtils的populate方法实现
查看>>
部署Nginx+Tomcat负载均衡集群
查看>>
Unable to instantiate default tuplizer [org.hib...
查看>>
Django模板--反向解析
查看>>
linux搭建grafana
查看>>
tomcat环境变量
查看>>
linux服务器搭建 NAT和DHCP超详细
查看>>
Java并发编程40道面试题及答案——面试稳了
查看>>
“大数据”领域里的“不明觉厉”
查看>>
调试Python程序代码的几种方法总结
查看>>
Linux引导过程内幕
查看>>
Oracle查询表结构的常用语句
查看>>