关键区别在于
CountDownLatch将线程分为服务者和到达者,而所有使用a的线程
CyclicBarrier同时扮演这两个角色。
- 使用闩锁,服务员等待最后一个到达的线程到达,但是那些到达的线程自己不做任何等待。
- 有了障碍,所有线程都会到达,然后等待最后一个线程到达。
您的闩锁示例暗示所有十个人必须等待一起举起石头。不是这种情况。现实中更好的例子是考试提示器,它耐心地等待每个学生上交考试。一旦完成考试并可以自由离开,学生就不必等待。一旦最后一名学生参加考试(或时间限制到期),提示器将停止等待并退出测试。



