博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CyclicBarrier的应用场景
阅读量:6257 次
发布时间:2019-06-22

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

CyclicBarrier的应用场景

CyclicBarrier可以用于多线程计算数据,最后合并计算结果的应用场景。比如我们用一个Excel保存了用户所有银行流水,每个Sheet保存一个帐户近一年的每笔银行流水,现在需要统计用户的日均银行流水,先用多线程处理每个sheet里的银行流水,都执行完之后,得到每个sheet的日均银行流水,最后,再用barrierAction用这些线程的计算结果,计算出整个Excel的日均银行流水。

代码来自:http://blog.csdn.net/shihuacai/article/details/8856407

public class CyclicBarrierTest {            public static void main(String[] args) throws IOException, InterruptedException {          //如果将参数改为4,但是下面只加入了3个选手,这永远等待下去          //Waits until all parties have invoked await on this barrier.           CyclicBarrier barrier = new CyclicBarrier(3);            ExecutorService executor = Executors.newFixedThreadPool(3);          executor.submit(new Thread(new Runner(barrier, "1号选手")));          executor.submit(new Thread(new Runner(barrier, "2号选手")));          executor.submit(new Thread(new Runner(barrier, "3号选手")));            executor.shutdown();      }  }    class Runner implements Runnable {      // 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)      private CyclicBarrier barrier;        private String name;        public Runner(CyclicBarrier barrier, String name) {          super();          this.barrier = barrier;          this.name = name;      }        @Override      public void run() {          try {              Thread.sleep(1000 * (new Random()).nextInt(8));              System.out.println(name + " 准备好了...");              // barrier的await方法,在所有参与者都已经在此 barrier 上调用 await 方法之前,将一直等待。              barrier.await();          } catch (InterruptedException e) {              e.printStackTrace();          } catch (BrokenBarrierException e) {              e.printStackTrace();          }          System.out.println(name + " 起跑!");      }  }

 

转载于:https://www.cnblogs.com/juniorMa/p/6206778.html

你可能感兴趣的文章
jquery checkbox
查看>>
GNU make manual 翻译(三十二)
查看>>
内存泄漏简介
查看>>
管理内核模块
查看>>
SQL NOTE--CURSOR
查看>>
cvMatND 多维数组 设置和读取像素值
查看>>
使用XML文件方式配置log4cxx(log4cxx xml例子)
查看>>
java读写文件大全 [转]
查看>>
C语言学习必读
查看>>
分享一个String Replace方法
查看>>
温习 Linux 命令
查看>>
可扩展性设计之Cache与Search的利用
查看>>
unity3d常见问题
查看>>
压缩UIImage
查看>>
hdu1509
查看>>
Eclipse+PyDev 安装和配置
查看>>
使用SQLServer Audit来监控触发器的启用、禁用情况(转载)
查看>>
OFBIZ Party Relationship 关系图
查看>>
获取Cookie(未测试)
查看>>
SQL Server 2008的备份和日志收缩
查看>>