Основное отличие CountDownLatch от CyclicBarrier в синхронизации потоков заключается в следующем:
- CountDownLatch (замок с обратным отсчётом) предоставляет возможность любому количеству потоков в блоке кода ожидать до тех пор, пока не завершится определённое количество операций, выполняющихся в других потоках, перед тем как они будут «отпущены», чтобы продолжить свою деятельность. timmson.github.io В конструктор CountDownLatch обязательно передаётся количество операций, которое должно быть выполнено, чтобы замок «отпустил» заблокированные потоки. timmson.github.io
- CyclicBarrier реализует шаблон синхронизации «Барьер». timmson.github.io Циклический барьер является точкой синхронизации, в которой указанное количество параллельных потоков встречается и блокируется. timmson.github.io Как только все потоки прибыли, выполняется опционное действие, и, после того, как оно выполнено, барьер ломается и ожидающие потоки «освобождаются». timmson.github.io
Таким образом, CountDownLatch требует, чтобы только одна сторона ждала остальных, тогда как CyclicBarrier требует, чтобы все потоки ждали друг друга. javarush.com