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

  • 相关阅读:
    Service Name Port Number Transport Protocol tcp udp 端口号16bit
    linux linux 互传文件 win 不通过 ftp sftp 往linux 传文件(文件夹)
    soft deletion Google SRE 保障数据完整性的手段
    Taylor series
    Taylor's theorem
    Moving average
    REQUEST
    Unix file types
    mysqld.sock
    Tunneling protocol
  • 原文地址:https://www.cnblogs.com/cq-yangzhou/p/12049293.html
Copyright © 2011-2022 走看看