java – CountDownLatch和CyclicBarrier的实际示例

一个例子是我们的培训师之一,当他解释CountDownLatch和CyclicBarrier之间的差异.

CountDownLatch:假设一个石头可以被10人抬起,所以你将等待所有10人来.那么只有你可以抬起石头.

CyclicBarrier:如果你要去野餐,你需要先从你们所有人开始旅程的共同点开会.

如果有人同意这些意见,请给我一些细节.

我已经读过这两个类的sun API.但我需要更多的解释.

关键区别在于CountDownLatch将线程分成等待者和到达者,而所有使用CyclicBarrier的线程都执行这两个角色.

有一个闩锁,服务员等待最后到达的线程到达,但那些到达的线程不会自动等待.
>有一个障碍,所有线程到达,然后等待最后一个到达.

你的闩锁示例意味着所有十个人必须等待把石头提起来.不是这种情况.一个更好的现实世界的例子将是一个考试助手,耐心地等待每个学生进行考试.学生在完成考试后不要等待,可以自由离开.一旦最后一名学生参加考试(或时间限制到期),提名者将停止等待并离开考试.

翻译自:https://stackoverflow.com/questions/10156191/real-life-examples-for-countdownlatch-and-cyclicbarrier

转载注明原文:java – CountDownLatch和CyclicBarrier的实际示例