zoukankan      html  css  js  c++  java
  • 多线程-栅栏CyclicBarrier

      上一篇总结了闭锁CountDownLatch,这一篇总结一下栅栏CyclicBarrier。它们两者之间的区别主要是,闭锁是等待一个事件发生,比如上一篇的田径比赛,运动员等待裁判哨声一响就可以开始跑,假如这个时候某个选手走神了,还没准备就绪,这个时候其他队员不需要等待他准备就绪才可以开始跑。

      而栅栏呢,就必须等待所有队员准备就绪的时候,才可以开始跑。类似生活中,我们几个人约好出去春游,出发前,我们在某一个地点集合,等所有人都到齐的时候,我们才开始搭车出去春游,如果某一个小伙伴还没到聚集地,我们就一直等到他到了,才开始出发。

      闭锁用于等待事件,而栅栏用于等待其他线程准备就绪。下面看一下例子:

    package cyclicBarrier.cyclicBarrier;
    
    import java.util.concurrent.BrokenBarrierException;
    import java.util.concurrent.CyclicBarrier;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    public class CyclicBarrierDemo {
    
        public static void main(String []args){
            
            ExecutorService exec=Executors.newCachedThreadPool();
            
            final CyclicBarrier barrier=new CyclicBarrier(5, new Runnable() {
                public void run() {
                    System.out.println("大家都到齐了,一起出发...");
                }
            });
            for(int i=1;i<=5;i++){
                final int num=i;
                Thread thread=new Thread(new Runnable() {
                    public void run() {
                        try {
                            Thread.sleep((long) (Math.random()*10000));
                            System.out.println(num+"号已经到达目的地..");
                            barrier.await();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        } catch (BrokenBarrierException e) {
                            e.printStackTrace();
                        }
                    }
                });
                exec.execute(thread);
            }
            exec.shutdown();
        }
    }

      运行结果如下:

      

      参考地址:JAVA并发编程实战

           http://m.jb51.net/article/63970.htm

  • 相关阅读:
    centos网卡一致性命名规则
    CloudBoot裸机部署服务器
    vmware-nic teaming
    电商 Excel 列 连接,类似SQL里面的 join
    Layui 多选
    电商工具 谷歌插件 版本 2021-06-11
    电商工具 谷歌插件 数据抓取 数据下载 生意参谋的访客数据、淘宝后台订单、主图、详情图、评论、物流、直通车数据
    其它 VS Code 配置选中的文字
    C# 跨域
    PS 字体的使用
  • 原文地址:https://www.cnblogs.com/gdpuzxs/p/6993531.html
Copyright © 2011-2022 走看看