Встречается на собеседованиях • сегодня

Что такое CyclicBarrier

CyclicBarrier — это синхронизатор, который позволяет потокам ждать друг друга перед выполнением определенного барьера. После достижения барьера заданным количеством потоков, выполняется действие (если оно задано) и потоки продолжают работу.

Основные методы:

  • await() — поток блокируется до достижения барьера.
  • reset() — сбрасывает барьер.

Пример:

java
CyclicBarrier barrier = new CyclicBarrier(3, () -> System.out.println("Barrier reached"));

Runnable task = () -> {
    System.out.println(Thread.currentThread().getName() + " waiting");
    barrier.await();
    System.out.println(Thread.currentThread().getName() + " continued");
};

new Thread(task).start();
new Thread(task).start();
new Thread(task).start();

Вывод:

text
Thread-0 waiting
Thread-1 waiting
Thread-2 waiting
Barrier reached
Thread-2 continued
Thread-0 continued
Thread-1 continued

Отличие от CountDownLatch: CyclicBarrier можно использовать повторно, а CountDownLatch — одноразовый.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы