前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CountDownLauch解析

CountDownLauch解析

作者头像
名字是乱打的
发布2022-05-13 12:33:45
3030
发布2022-05-13 12:33:45
举报
文章被收录于专栏:软件工程
CountDownLauch

概念: 让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒

CountDownLatch主要有两个方法

  • 当一个或多个线程调用await方法时,调用线程会被阻塞。
  • 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞)当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。

CountDownLatchDemo

CountDownLatch实例

实例中用到的枚举器

实例2

猴哥打妖怪

CountDownLauch和CyclicBarrier的区别

这篇文章介绍的我觉得挺好的,三点区别一针见血,https://blog.csdn.net/qweqwruio/article/details/81359780

我觉得总结来看是一点,CountDownLauch等待的是事件,CyclicBarrier等待是线程,细分他们的区别的如下

  • CountDownLatch是不可重置的,所以无法重用;而CyclicBarrier则没有这种限制,可以重用。
  • CountDownLatch的基本操作组合是countDown/await。调用await的线程阻塞等待countDown足够的次数,不管你是在一个线程还是多个线程里countDown,只要次数足够即可。所以说CountDownLatch操作的是事件。
  • CyclicBarrier的基本操作组合,则就是await。当所有的伙伴(parties)都调用了await,才会继续进行任务,并自动进行重置。注意,正常情况下,CyclicBarrier的重置都是自动发生的,如果我们调用reset方法,但还有线程在等待,就会导致等待线程被打扰,抛出BrokenBarrierException异常。CyclicBarrier侧重点是线程,而不是调用事件,它的典型应用场景是用来等待并发线程结束。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CountDownLauch
  • CountDownLauch和CyclicBarrier的区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档