Можете ли вы объяснить роль и преимущества класса CyclicBarrier в Java и привести примеры его типичных сценариев использования?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Сценарии использования:

  • Координация нескольких потоков, которые должны выполнить часть работы параллельно, а затем синхронизироваться перед следующей фазой.
  • Реализация алгоритмов с фазовой синхронизацией, например, в параллельных вычислениях или играх.

Пример:

CyclicBarrier barrier = new CyclicBarrier(3, () -> System.out.println("Все потоки достигли барьера"));

Runnable task = () -> {
    try {
        System.out.println(Thread.currentThread().getName() + " выполняет работу");
        Thread.sleep(1000);
        barrier.await(); // ждем остальных
        System.out.println(Thread.currentThread().getName() + " продолжает работу после барьера");
    } catch (Exception e) {
        e.printStackTrace();
    }
};

for (int i = 0; i < 3; i++) {
    new Thread(task).start();
}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее