zoukankan      html  css  js  c++  java
  • CountDownLatch和Cyclicbarrier

    一、概念

    CountDownLatch:具有计数器的功能,等待其他线程执行完毕,主线程再继续执行,用于监听某些初始化操作,并且线程进行阻塞,等初始化执行完毕后,通知主线程继续工作执行。值得注意的是CountDownLatch计数的次数一定要与构造器传入的数字一致,比如构造器传入的是3,则countDown()一定要执行3次,否则线程将一直阻塞。CountDownLatch通常用来控制线程等待,它可以让线程等待倒计时结束,再开始执行。

    CyclicBrrier:翻译过来就是循环栅栏的意思,其作用就是多线程的进行阻塞,等待某一个临界值条件满足后,同时执行!假设有一个场景:每个线程代表一个跑步运动员,当运动员都准备好后,才一起出发,只要有一个人没有准备好,大家都等待!

    2、区别

    CountDownLatch:

            (1)、一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行;

      (2)、不能重用,做减法操作,初始化为传入的计数的次数;

            (3)、目标方法执行完后,会释放线程,所以线程池中的线程可以重用。
    CyclicBrrier:

          (1)、N个线程相互等待,任何一个线程完成之前,所有的线程都必须等待;

           (2)、可以循环使用,做加法操作,初始化为0;

           (3)、目标方法执行完后,不会释放线程,一直处于等待状态,直到所有的线程都执行完毕,所以线程池中的线程不能重复使用,并且线程池的可用核心线程数不能小于需要执行的线程数。

  • 相关阅读:
    Spring Boot中实现logback多环境日志配置
    阿里云ECSLinux系统下挂载磁盘(转)
    解决 No qualifying bean of type 问题
    通过rpm离线安装Oracle 19C
    ADFS配置踩坑记
    .NET Core 2.0下载和文档
    .NET Core 2.0和ASP.NET Core 2.0正式版抢先体验
    .NET 微服务和Docker容器
    DocFX生成PDF文档
    ASP.NET Core 开源论坛项目 NETCoreBBS
  • 原文地址:https://www.cnblogs.com/cq-yangzhou/p/12049293.html
Copyright © 2011-2022 走看看