• CountDownLatch的和CyclicBarrier使用


    CyclicBarrier的使用:

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

    CountDownLacth使用:

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

    下面先看一个CountDownLatch的demo:

    看一下运行的结果:

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

    下面看一个cyclicBarrier使用:

    同样是看一个demo:

    我们看一下运行结果:

      

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

    注意两者的区别:

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

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

  • 相关阅读:
    测试用例设计白皮书--测试用例设计综合策略
    流程控制
    与用户交互,格式化输出,基本运算符
    jupyter的安装
    python程序运行的方式、变量、注释、内存管理、数据类型
    博客园 文章爬取(乱写的,有的爬不下来)
    Python 九九乘法表打印
    Python 爬歌曲
    redis快速入门
    UDPsocket编程
  • 原文地址:https://www.cnblogs.com/shmilyToHu/p/6474672.html
Copyright © 2020-2023  润新知