Назад к вопросам
Junior — Middle
73
Опишите, что представляет собой класс Phaser в контексте механизма мониторинга в программировании.
Ответ от нейросети
sobes.tech AI
Класс Phaser в Java — это синхронизатор, который позволяет координировать выполнение нескольких потоков, разбитых на фазы. Он похож на CountDownLatch и CyclicBarrier, но более гибкий.
Основные особенности:
- Позволяет потокам регистрироваться и дeregister-иться динамически.
- Поддерживает несколько фаз: после того, как все зарегистрированные потоки вызовут
arrive(), фаза считается завершённой, и начинается следующая. - Можно переопределить метод
onAdvance(), чтобы выполнять действия при переходе между фазами или завершении работы.
Пример использования:
Phaser phaser = new Phaser(3); // 3 участника
Runnable task = () -> {
System.out.println(Thread.currentThread().getName() + " начал фазу 1");
phaser.arriveAndAwaitAdvance(); // ждем остальных
System.out.println(Thread.currentThread().getName() + " начал фазу 2");
phaser.arriveAndAwaitAdvance();
phaser.arriveAndDeregister(); // выход из phaser
};
for (int i = 0; i < 3; i++) {
new Thread(task).start();
}
Таким образом, Phaser используется для поэтапной синхронизации потоков с возможностью динамического изменения числа участников.