jdk5 CyclicBarrier让聚合
来源:互联网 发布:win10怎么引导ubuntu 编辑:程序博客网 时间:2024/05/17 02:37
CyclicBarrier允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待。
package com.skydream.thread.cyclicBarrier;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class Runnable1 implements Runnable {private CyclicBarrier cyclicBarrier;public Runnable1(CyclicBarrier cyclicBarrier){this.cyclicBarrier = cyclicBarrier;}@Overridepublic void run() {System.out.println("this is Runnable1");try {cyclicBarrier.await();System.out.println("================");} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (BrokenBarrierException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
package com.skydream.thread.cyclicBarrier;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class CyclicBarrierTest {/** * @param args */public static void main(String[] args) {ExecutorService service = Executors.newCachedThreadPool();final CyclicBarrier cyclicBarrier = new CyclicBarrier(3);service.execute(new Runnable1(cyclicBarrier));for(int i=0;i<4;i++){Runnable runnable = new Runnable() {@Overridepublic void run() {try {Thread.sleep((long)(Math.random()*10000));System.out.println("这是在Runnable里");cyclicBarrier.await();System.out.println("runable await 之后");} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (BrokenBarrierException e) {// TODO Auto-generated catch blocke.printStackTrace();}}};service.execute(runnable);}}}
从运行结果可以看出三个线程到达后才继续往下运行。
- jdk5 CyclicBarrier让聚合
- cyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- cyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- CyclicBarrier
- WCF的简单实例(手写代码实现)--服务端
- oracle学习 restore database和 recover database
- 从IOS模拟器中截屏
- Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析
- oracle dba培训教程 第4章 数据字典和控制文件
- jdk5 CyclicBarrier让聚合
- vs2010 sp1 安装Silverlight5 语言版本不匹配 解决方案
- 非递归遍历文件夹
- tomcat中三种部署项目的方法
- WCF的简单实例(手写代码实现)--客户端
- 史上最完整的iOS DIY framework 详细教程(二)
- s3c2440的中断控制器以及中断编程
- 红外遥控协议-NEC协议
- 在数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数