首页 > 其他分享 >CountDownLatch 和 CyclicBarrier 的区别?

CountDownLatch 和 CyclicBarrier 的区别?

时间:2023-03-19 15:12:31浏览次数:54  
标签:Barrier 区别 计数器 线程 CountDownLatch CyclicBarrier 等待

CyclicBarrier 它允许一组线程互相等待,直到到达某个公共屏障点 (Common Barrier Point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 Barrier 在释放等待线程后可以重用,所以称它为循环 ( Cyclic ) 的 屏障 ( Barrier ) 。

每个线程调用 #await() 方法,告诉 CyclicBarrier 我已经到达了屏障,然后当前线程被阻塞。当所有线程都到达了屏障,结束阻塞,所有线程可继续执行后续逻辑。

CountDownLatch 能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为 0 时,表示所有的线程都已经完成了任务,然后在 CountDownLatch 上等待的线程就可以恢复执行任务。

两者区别:

  • CountDownLatch 的作用是允许 1 或 N 个线程等待其他线程完成执行;而 CyclicBarrier 则是允许 N 个线程相互等待。
  • CountDownLatch 的计数器无法被重置;CyclicBarrier 的计数器可以被重置后使用,因此它被称为是循环的 barrier 。

 

标签:Barrier,区别,计数器,线程,CountDownLatch,CyclicBarrier,等待
From: https://www.cnblogs.com/xfeiyun/p/17233265.html

相关文章

  • synchronized 和 Lock 的区别
    Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock......
  • 能不能说一说 TCP 和 UDP 的区别?
    TCP是一个面向连接的、可靠的、基于字节流的传输层协议。而UDP是一个面向无连接的传输层协议。和 UDP 相比,TCP有三大核心特性:面向连接。所谓的连接,指的是客户端和服......
  • sql join on和不用join区别_图解 SQL 各种 JOIN,太有用了!
    原文地址:https://blog.csdn.net/weixin_39965283/article/details/111390490  前言在各种问答社区里谈及SQL里的各种JOIN之间的区别时,最被广为引用的是CodeProj......
  • 字符设备与块设备的区别
    块设备:系统中能够随机不按顺序地访问固定大小的数据片的设备叫做块设备,这些数据片就称作块。常见的块设备有硬盘,软盘驱动器,闪存等字符设备:系统中按字符流的方式被有序访问......
  • 循环语句区别(for while do...while)
    以下观点仅代表个人想法,不是标准C语言中有三种循环控制语句(goto不作考虑),那么这三个语句除了语法不同外,是否还有其他区别呢?像if语句和switch...case语句之间,除了语法不同......
  • 数据库中的drop、truncate、 delete的区别
    drop直接删掉表。truncate删除表中数据,再插入时自增长id又从1开始。delete删除表中数据,可以加where字句。DELETE语句会记录日志以便进行回滚操作;TRUNCATETABLE不会......
  • mysql小知识点---interactive_timeout和wait_timeout区别
    interactive_timeout定义了对于交互式连接(比如使用cmd命令窗口或者在linux上连接msyql),服务器等待的最大时间,如果超过这个时间,服务端仍然没有受到数据,则会关闭连接;【我理解......
  • ## react和vue的区别
     react和vue对比,选型问题:1.(切入点dom操作)都有一个特点,不进行dom操作就能操作页面了,原生开发中dom操作是昂贵的,改变页面就必须操作dom,vue和react都使用虚拟dom实......
  • js中null和undefined的区别
    js中null和undefined的区别?这也是一个常见的js面试题相同点1,都是基本类型。2,做判断值都是false。!!null===false//true!!undefined===false//true不同点1......
  • js中null和undefined的区别
    js中null和undefined的区别?这也是一个常见的js面试题相同点1,都是基本类型。2,做判断值都是false。!!null===false//true!!undefined===false//true不同点1,......