Sobes.tech
Назад к вопросам
Junior — Middle
66

Объясните принцип работы CyclicBarrier и в каких сценариях его используют

Ответ от нейросети

sobes.tech AI

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();
}