我之见--java 多线程CyclicBarrier
来源:互联网 发布:生态安全调查数据库 编辑:程序博客网 时间:2024/05/16 17:35
CyclicBarrier 和之前CountDownLatch(闭锁)功能上面差不多,都阻塞一组线程直到某个事件发生 。主要我们来看一下它们的区别:
1 . CountDownLatch 是等待事件的发生,而CyclicBarrier则是等待线程的到来,然后执行某个操作,
2. CyclicBarrier可以重复使用,也就是大家可以反复的在栅栏处汇集,而 CountDownLatch只能一次使用。
3. 如果等待的都是线程的话,CountDownLatch并不会阻塞等待的线程,只是阻塞将要发生的线程,CyclicBarrier 是会阻塞等待的线程,当所有的线程到达之后又会唤醒阻塞的线程。
下面我们看一下具体的使用:
package javaThread;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class CyclicBarrierThread { public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(7, new Runnable() { @Override public void run() { System.out.println(" wating for runt , start to run"); } }); for(int i = 0;i< 7 ;i ++) { Worker work = new Worker("name " +i , cyclicBarrier); new Thread(work).start(); } } static class Worker implements Runnable { final String id; final CyclicBarrier barrier; public Worker(final String id, final CyclicBarrier barrier) { this.id = id; this.barrier = barrier; } @Override public void run() { try { System.out.println(id + "starts to run !"); Thread.sleep((long) (Math.random() * 10000)); System.out.println(id + "arrived !"); barrier.await(); System.out.println(id + "starts to run end !"); } catch (InterruptedException e) { e.printStackTrace(); } catch (BrokenBarrierException e) { e.printStackTrace(); } } } }
CyclicBarrier创建了一个所有线程到达之后执行的Runable ,当所以者到达后执行Runable
0 0
- 我之见--java 多线程CyclicBarrier
- Java多线程之CyclicBarrier
- Java多线程之CyclicBarrier
- JAVA多线程之CyclicBarrier
- Java多线程之CyclicBarrier
- Java多线程之CyclicBarrier
- Java多线程之----CyclicBarrier
- Java 多线程之CyclicBarrier
- JAVA多线程之(CyclicBarrier)
- Java多线程技术之CyclicBarrier
- (九)java多线程之CyclicBarrier
- java多线程问题之同步器CyclicBarrier
- Java多线程之CyclicBarrier(一)
- Java多线程同步工具之CyclicBarrier
- Java多线程之~~~CyclicBarrier 类的使用
- java多线程之利用“CyclicBarrier”汇总结果
- java多线程之CyclicBarrier类基本用法
- java多线程之CyclicBarrier简单用法
- XCode Could not launch "" failed to get the task for process
- 暴走吧!Snapdragon SDK开发速成指南
- 个人主页
- maven手动添加jar包到库
- 我是kekek、
- 我之见--java 多线程CyclicBarrier
- How to Develop with ADF Business Components for Multiple Databases
- 转:罗辑实验2《未来站在你身后》图书包开箱大揭秘
- Php面向对象 – 单例模式
- vmware10.0 下 基于centos6.5安装xen的问题
- 咳咳咳 可可
- date命令
- 支付宝接口程序、文档及解读(ASP.NET)
- Entity FrameWork初始化数据库的四种策略