「java.util.concurrent并发包」之 CyclicBarrier
2024-09-05 09:06:18
一 描述
CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。
CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍。
CyclicBarrier初始时还可带一个Runnable的参数, 此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。
二 代码实例
public class CyclicBarrierDemo { private static final int THREAD_NUM = 5; public static class WorkerThread implements Runnable { CyclicBarrier barrier; public WorkerThread(CyclicBarrier b) {
this.barrier = b;
} public void run() {
try {
System.out.println("Worker's waiting");
//线程在这里等待,直到所有线程都到达barrier
barrier.await();
System.out.println("ID:" + Thread.currentThread().getId() + " Working");
} catch (Exception e) {
e.printStackTrace();
}
}
} public static void main(String[] args) {
//当所有线程到达barrier时执行
CyclicBarrier cb = new CyclicBarrier(THREAD_NUM, () -> System.out.println("Inside Barrier")); for (int i = 0; i < THREAD_NUM; i++) {
new Thread(new WorkerThread(cb)).start();
}
}
}
输出结果
Worker's waiting
Worker's waiting
Worker's waiting
Worker's waiting
Worker's waiting
Inside Barrier
ID: Working
ID: Working
ID: Working
ID: Working
ID: Working
最新文章
- 为Windows Azure Web站点添加MIME类型解决文件下载失败的问题
- adb 服务端口2037被占,导致adb和appium无法工作
- C#的timer类
- C# lambda表达式及初始化器
- Solr5.3.1 SolrJ查询索引结果
- Secure Socket Tunneling Protocol Service服务无法启动(win7)
- linq的创建 和 数据的增删改查
- CentOS下编译安装MySQL 5.6.21
- CentOs of Tomcat commands
- 【转】Java之 内存区域和GC机制
- [Hive - Tutorial] Querying and Inserting Data 查询和插入数据
- 【Tomcat源码学习】-5.请求处理
- Python的几个常用模块
- asp.net 限制上传文件的大小与时间
- nginx访问502 gateway,*1 connect() failed (111: Connection refused) while connecting to upstream
- JVM笔记(虚拟机各内存的介绍)
- redis的主从机制 master&;slave
- laravel----------如何优化laravel框架
- CSS3伪类和伪元素
- Hbase-2.0.0_03_Hbase数据模型
热门文章
- docker部署项目: centos+python+redis+mysql+uwsgi+nginx
- topcoder13444
- Postman集合/文件夹/请求中脚本的执行顺序
- 如何检测域名是否被微信屏蔽 微信域名检测接口API是如何实现
- html,css,js实现的一个钟表
- postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)
- QT 多线程程序设计 -互斥
- POJ 3083 -- Children of the Candy Corn(DFS+BFS)TLE
- vscode 设置 eclipse 快捷键
- Map构造器模式 map builder pattern