Назад к вопросам
Junior — Middle
67
Объясните принцип работы 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();
}