CyclicBarrier底层执行流程
1.初始化CyclicBarrier中的各种成员变量,包括parties、count以及Runnable(可选)。
2.当调用await方法时,底层会先检查计数器是否已经归零,如果是的话,就首先执行可选的Runnable,接下来开始下一个generation;
3.在下一个分代(generation)中,将会重置count的值为parties,并且创建新的Generation实例。
4.同时会调用Condition的signalAll方法,唤醒所有在屏障前等待的线程,让其开始继续执行。
5.如果计数器没有归零,那么当前的调用线程将会通过Condition的await方法,在屏障前进行等待。
6.以上所有执行流程均在lock锁的控制范围内,不会出现并发情况。
本文详细解析了CyclicBarrier的工作原理及其内部执行流程。从初始化到各线程等待与释放的过程,介绍了计数器归零后的重置及线程唤醒机制。
1156

被折叠的 条评论
为什么被折叠?



