CyclicBarrier:人齐了,老司机就发车了!(1)

简介: CyclicBarrier:人齐了,老司机就发车了!(1)

上一篇咱讲了 CountDownLatch 可以解决多个线程同步的问题,相比于 join 来说它的应用范围更广,不仅可以应用在线程上,还可以应用在线程池上。然而 CountDownLatch 却是一次性的计数器,以王者农药来说,咱们不可能一场团战就决定比赛的输赢,所以在某些场景下,咱们是需要重复使用某个等待功能的,这就是我们今天要介绍的另一个主角——CyclicBarrier。


CyclicBarrier


CyclicBarrier 翻译为中文是循环(Cyclic)栅栏(Barrier)的意思,它的大概含义是实现一个可循环利用的屏障。


微信图片_20220120172234.jpg


CyclicBarrier 作用是让一组线程相互等待,当达到一个共同点时,所有之前等待的线程再继续执行,且 CyclicBarrier 功能可重复使用。



微信图片_20220120172250.gif


举个栗子


比如磊哥要坐班车回老家,因为中途不允许上、下乘客,所以营运的公司为了收益最大化,就会等人满之后再发车。像这种等人坐满就发一班车的场景,就是 CyclicBarrier 所擅长的,因为它可以重复使用(不像 CountDownLatch 那样只能用一次)。


微信图片_20220120172320.jpg



相关文章
|
4月前
|
安全 Java 程序员
惊呆了!Java多线程里的“synchronized”竟然这么神奇!
【6月更文挑战第20天】Java的`synchronized`关键字是解决线程安全的关键,它确保同一时间只有一个线程访问同步代码。在案例中,`Counter`类的`increment`方法如果不加同步,可能会导致竞态条件。通过使用`synchronized`方法或语句块,可以防止这种情况,确保线程安全。虽然同步会带来性能影响,但它是构建并发应用的重要工具,平衡同步与性能是使用时需考虑的。了解并恰当使用`synchronized`,能有效应对多线程挑战。
18 1
|
4月前
|
存储 并行计算 监控
为师妹写的《Java并发编程之线程池十八问》被表扬啦!
【6月更文挑战第5天】为师妹写的《Java并发编程之线程池十八问》被表扬啦!
46 7
|
4月前
|
存储 缓存 Java
老程序员分享:Java并发编程:线程池的使用
老程序员分享:Java并发编程:线程池的使用
|
4月前
|
Java
惊呆了!原来JAVA多线程间是这样“窃窃私语”的!
【6月更文挑战第20天】在Java中,多线程通过wait()和notify()/notifyAll()进行通信,确保共享数据的同步。例如,一个生产者线程在队列满时等待,消费者线程在队列空时等待。当条件改变时,一个线程使用notify()唤醒另一个等待的线程,保证数据的一致性。这种“窃窃私语”机制是Java实现线程协作的关键。
29 0
|
5月前
|
监控 安全 Java
CompletableFuture探秘:解锁Java并发编程的新境界
CompletableFuture探秘:解锁Java并发编程的新境界
198 0
|
算法 Java 程序员
5千字详细讲解java并发编程的AQS
本文讲解AQS的组成,实现原理,应用,源码解析
5千字详细讲解java并发编程的AQS
|
机器学习/深度学习 安全 Java
《提升能力,涨薪可待》-Java并发之AQS全面详解
在工作上必须保持学习的能力,这样才能在工作得到更好的晋升,涨薪指日可待,欢迎一起学习【提升能力,涨薪可待】系列
123 0
《提升能力,涨薪可待》-Java并发之AQS全面详解
|
Java
java并发编程的艺术(5)CountDownLatch笔记
java并发编程的艺术(5)CountDownLatch笔记
105 0
CyclicBarrier:人齐了,老司机就发车了!(3)
CyclicBarrier:人齐了,老司机就发车了!(3)
123 0
CyclicBarrier:人齐了,老司机就发车了!(3)
CyclicBarrier:人齐了,老司机就发车了!(2)
CyclicBarrier:人齐了,老司机就发车了!(2)
119 0
CyclicBarrier:人齐了,老司机就发车了!(2)