One example is given by one of our trainers when he was explaining difference between CountDownLatch and CyclicBarrier.
CountDownLatch: Suppose a stone can be lifted by
For the CyclicBarrier, One real time example that I could think of; Lets imagine there is a group of tourists on a tempo traveller. There are multiple places that are to be visited in a day. The tempo driver knows there are x number of tourists. Once the first location is reached, all the tourists go out and return back at different points of time; however the tempo and the travellers have to wait until all tourists return back. Once all of them return the driver proceeds to the next location and the same process repeats. Here, the CyclicBarrier is initialized with the number of tourists. Each tourist is like a Thread and upon returning back, they call CyclicBarrier await() so that they wait until all other tourists are back. Let me now what you think