Java CyclicBarrier的用法
来源:互联网 发布:中日友好靠韩国知乎 编辑:程序博客网 时间:2024/05/17 00:55
CyclicBarrier和CountDownLatch一样,都是关于线程的计数器。
使用的场景:保证所有的线程同一时间开始执行相关的代码。
测试代码如下:
1 public class TestCyclicBarrier { 2 3 private static final int THREAD_NUM = 5; 4 5 public static class WorkerThread implements Runnable{ 6 7 CyclicBarrier barrier; 8 9 public WorkerThread(CyclicBarrier b){10 this.barrier = b;11 }12 13 @Override14 public void run() {15 // TODO Auto-generated method stub16 try{17 System.out.println("Worker's waiting");18 //线程在这里等待,直到所有线程都到达barrier。19 barrier.await();20 System.out.println("ID:"+Thread.currentThread().getId()+" Working");21 }catch(Exception e){22 e.printStackTrace();23 }24 }25 26 }27 28 /**29 * @param args30 */31 public static void main(String[] args) {32 // TODO Auto-generated method stub33 CyclicBarrier cb = new CyclicBarrier(THREAD_NUM, new Runnable() {34 //当所有线程到达barrier时执行35 @Override36 public void run() {37 // TODO Auto-generated method stub38 System.out.println("Inside Barrier");39 40 }41 });42 43 for(int i=0;i<THREAD_NUM;i++){44 new Thread(new WorkerThread(cb)).start();45 }46 }47 48 }49 /*50 以下是输出:51 Worker's waiting52 Worker's waiting53 Worker's waiting54 Worker's waiting55 Worker's waiting56 Inside Barrier57 ID:12 Working58 ID:8 Working59 ID:11 Working60 ID:9 Working61 ID:10 Working62 */
- CyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。
- CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍。
- CyclicBarrier初始时还可带一个Runnable的参数, 此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。
阅读全文
0 0
- Java CyclicBarrier的用法
- Java中CyclicBarrier的用法
- Java多线程 - 浅析CyclicBarrier的用法
- java中CyclicBarrier的简单用法
- 浅谈Java中CyclicBarrier的用法
- Java多线程之2-- CyclicBarrier的用法
- 谈谈java中CyclicBarrier的用法
- 浅谈Java中CyclicBarrier的用法
- 浅谈Java中CyclicBarrier的用法
- Java中CyclicBarrier的用法和示例
- CyclicBarrier的用法
- 多线程CyclicBarrier的用法
- CyclicBarrier的用法
- CyclicBarrier的用法
- CyclicBarrier的用法
- JUC--CyclicBarrier的用法
- CyclicBarrier的用法
- CyclicBarrier的用法
- 【死磕Java并发】-----深入分析synchronized的实现原理
- 【Maven】了解
- 分块学习记录
- SSH框架搭建和整合(struts2、spring4、hibernate5)
- Hashtable实现原理及源码分析
- Java CyclicBarrier的用法
- 四则运算(递归)
- HDU 3374 String Problem (KMP+最大最小表示)
- 单线程和异步队列
- synchronized关键字
- JavaScript面向对象的程序常用的继承方式有哪些?
- vmvare 连接 gns3并实现互联互通
- 框架基础——全面解析Java注解
- [生而为人-思考] 《人类简史》个人摘抄(时隔两年再读尤瓦尔•赫拉利)