java并发编程中CountDownLatch和CyclicBarrier的使用
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> java并发编程中CountDownLatch和CyclicBarrier的使用 在多线程程序设计中,经常会遇到一个线程等待一个或多个线程的场景,遇到这样的场景应该如何解决? 如果是一个线程等待一个线程,则可以通过await()和notify()来实现; 如果是一个线程等待多个线程,则就可以使用CountDownLatch和CyclicBarrier来实现比较好的控制。 下面来详细描述下CountDownLatch的应用场景: 例如:百米赛跑:8名运动员同时起跑,由于速度的快慢,肯定有会出现先到终点和晚到终点的情况,而终点有个统计成绩的仪器,当所有选手到达终点时,它会统计所有人的成绩并进行排序,然后把结果发送到汇报成绩的系统。 其实这就是一个CountDownLatch的应用场景:一个线程或多个线程等待其他线程运行达到某一目标后进行自己的下一步工作,而被等待的“其他线程”达到这个目标后继续自己下面的任务。 这个场景中: 1. 被等待的“其他线程”------>8名运动员 2. 等待“其他线程”的这个线程------>终点统计成绩的仪器 那么,如何来通过CountDownLatch来实现上述场景的线程控制和调度呢? jdk中CountDownLatch类有一个常用的构造方法: CountDownLatch(int