我们的一位培训人员在解释CountDownLatch和CyclicBarrier之间的区别时给出了一个示例。
CountDownLatch:假设一块石头可以举起10个人,那么您将等待所有10个人来来。然后只有您才能抬起石头。
CountDownLatch
CyclicBarrier:如果您要去野餐,则需要首先在某个共同点上认识,从这里大家开始旅程。
CyclicBarrier
如果有人同意这些意见,请给我一些细节。
我已经阅读了这两个类的sun API。但我需要更多解释。
关键区别在于CountDownLatch将线程分为服务者和到达者,而所有使用a的线程CyclicBarrier同时扮演这两个角色。
您的闩锁示例暗示所有十个人必须等待一起举起石头。不是这种情况。现实中更好的例子是考试提示器,它耐心地等待每个学生上交考试。一旦完成考试并可以自由离开,学生就不必等待。一旦最后一名学生参加考试(或时间限制到期),提示器将停止等待并退出测试。