CountDownLatch和Cyclicbarrier概念、区别及原理

CountDownLatch和Cyclicbarrier概念、区别及原理


一、概念

  CountDownLatch:具备计数器的功能,等待其余线程执行完毕,主线程在继续执行,用于监听某些初始化操做,而且线程进行阻塞,等初始化执行完毕后,通知主线程继续工做执行。值得注意的是CountDownLatch计数的次数必定要与构造器传入的数字一致,好比构造器传入的是3,则countDown()必定要执行3次,不然线程将一直阻塞。CountDownLatch一般用来控制线程等待,它可让线程等待倒计时结束,再开始执行。
  CyclicBrrier:翻译过来就是循环栅栏的意思,其做用就是多线程的进行阻塞,等待某一个临界值条件知足后,同时执行!假设有一个场景:每一个线程表明一个跑步运动员,当运动员都准备好后,才一块儿出发,只要有一我的没有准备好,你们都等待!多线程

二、区别

  CountDownLatch: 一个线程(或者多个), 等待另外N个线程完成某个事情以后才能执行。
  CyclicBrrier: N个线程相互等待,任何一个线程完成以前,全部的线程都必须等待。 ide


三、Java 8 下源码分析
3.1 CountDownLatch源码

coutDownLatch 底层实现了QAS,具体源码后面再分析。源码分析

3.2 CyclicBrrier源码
相关文章
相关标签/搜索