循环回环栅栏
、门、所有的线程到达这个门就开了,一批线程等另外一个线程到达门,然后继续运行
TeacherRunn线程等4个线程执行完毕后继续执行
TeacherRunn线程等四个线程执行完毕后继续执行
一批线程相互间等待,到达阈值,然后继续运行
老师等待4个学生都到齐了,再开始上课。
闭锁
闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程能够通过,当到达结束状态时,这扇门会打来并允许所有的线程通过。当闭锁到达结束状态后,将不会再改变状态,因此这扇门将永远保持打开状态。闭锁可以用来确保某些活动直到其他活动都完成后才继续执行,例如:
确保某个计算在其需要的所有资源都被初始化之后才继续执行。
确保某个服务在其依赖的所有其他服务都已经启动之后才启动。
等到直到直到某个操作的所有参与者(例如,在多玩家游戏中的所有玩家)都就绪再继续执行。
CountDownLatch是一种灵活的闭锁实现。闭锁状态包括一个计数器,该计数器被初始化为一个正数,表示需要等待的事件数量。countDown方法递减计数器,表示有一个事件已经发生了,而await方法等待计数器达到零,这表示所有需要等待的事件都已发生。如果计数器的值非零,那么await方法会一直阻塞直到计算器为零,或者等待中的线程中断,或者超时。