Answer
CountDownLatch waits for a set of threads to finish.
CyclicBarrier allows threads to wait for each other repeatedly.
Semaphore controls access to limited resources using permits.
CyclicBarrier allows threads to wait for each other repeatedly.
Semaphore controls access to limited resources using permits.