AQS同步组件中的CyclicBarrier(循环屏障)如何解析及具体应用案例?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2441个文字,预计阅读时间需要10分钟。
CyclicBarrier的原理+CyclicBarrier的字面意思是可以循环使用的屏障(Barrier)。其作用是让一组线程到达一个共同的屏障点(同步点),然后继续执行。简单来说,就是让一组线程在达到某个点时暂停,直到所有线程都到达后,才继续执行。
CyclicBarrier原理
CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。当某个线程调用了await方法之后,就会进入等待状态,并将计数器+1,直到所有线程调用await方法使计数器为CyclicBarrier设置的值,才可以继续执行,由于计数器可以重复使用,所以我们又叫它循环屏障。CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier我已经到达了屏障,然后当前线程被阻塞。CyclicBarrier可以用于多线程计算数据,最后合并计算结果的应用场景。
源码分析
/** * 创建一个新的CyclicBarrier当给定数量的参与方(线程)等待它时,它将触发, * 并且在障碍触发时不执行预定义的操作。本文共计2441个文字,预计阅读时间需要10分钟。
CyclicBarrier的原理+CyclicBarrier的字面意思是可以循环使用的屏障(Barrier)。其作用是让一组线程到达一个共同的屏障点(同步点),然后继续执行。简单来说,就是让一组线程在达到某个点时暂停,直到所有线程都到达后,才继续执行。
CyclicBarrier原理
CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。当某个线程调用了await方法之后,就会进入等待状态,并将计数器+1,直到所有线程调用await方法使计数器为CyclicBarrier设置的值,才可以继续执行,由于计数器可以重复使用,所以我们又叫它循环屏障。CyclicBarrier默认的构造方法是CyclicBarrier(int parties),其参数表示屏障拦截的线程数量,每个线程调用await方法告诉CyclicBarrier我已经到达了屏障,然后当前线程被阻塞。CyclicBarrier可以用于多线程计算数据,最后合并计算结果的应用场景。

