• CountDownLatch的和CyclicBarrier使用


    CyclicBarrier的使用:

      假设只有一个场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个人没有准备好,大家都等待。

    CountDownLacth使用:

      他经常用于监听某些初始化操作,等初始化执行完毕后,通知主线程继续工作。

    下面先看一个CountDownLatch的demo:

    看一下运行的结果:

    假如把t3线程的countDown.countDown();方法注释掉, 那么t1线程就永远都不会结束。

    下面看一个cyclicBarrier使用:

    同样是看一个demo:

    我们看一下运行结果:

      

    会发现,最后go的时间都是一样的,也就是和最后一个准备完成的时间是一致的;需要注意的是,为什么是3个准备完成进入await的时候,然后一起执行的,是因为这三个里面用的都是同一个CyclicBarrier对象,而且这个对象初始化的时候,传入了3这个数值。加入传的是4,那这三个线程都会一直运行,不会结束。

    注意两者的区别:

      CountDownLatch是属于一个线程等待,其他N个线程给那一个线程发送通知,然后这一个线程执行。

      CyclicBarrier是所有线程都是参与阻塞的,在最后一个线程处于等待的时候,那这个时候,所有线程都开始跑自己的线程。

  • 相关阅读:
    在github上搭建hexo博客
    Docker镜像命令笔记
    Scrapy学习1:安装
    Android安全初学笔记
    Python数据结构01 线性结构
    IOS开发之__bridge,__bridge_transfer和__bridge_retained (转)
    设置字体样式 TTF
    NYTimes Objective-C 编程风格指南
    MQTT简介
    如何将自己编写的app放到真机上运行
  • 原文地址:https://www.cnblogs.com/shmilyToHu/p/6474672.html
Copyright © 2020-2023  润新知