👩💻 Что такое Phaser в Java и зачем он нужен?
Phaser — это продвинутый синхронизатор из java.util.concurrent, который позволяет потокам координироваться по фазам выполнения.
• Поддерживает несколько фаз
• Гибко управляет количеством потоков
• Удобен для пошаговых алгоритмов
⚡️ Пример:
import java.util.concurrent.Phaser;
public class Main {
public static void main(String[] args) {
Phaser phaser = new Phaser(3);
Runnable task = () -> {
System.out.println(Thread.currentThread().getName() + " — фаза 1");
phaser.arriveAndAwaitAdvance();
System.out.println(Thread.currentThread().getName() + " — фаза 2");
};
new Thread(task).start();
new Thread(task).start();
new Thread(task).start();
}
}
➡️ Easy Java | #Теория
Phaser — это продвинутый синхронизатор из java.util.concurrent, который позволяет потокам координироваться по фазам выполнения.
В отличие от CountDownLatch и CyclicBarrier, он гибче: количество участников можно динамически добавлять и убирать.
• Поддерживает несколько фаз
• Гибко управляет количеством потоков
• Удобен для пошаговых алгоритмов
⚡️ Пример:
import java.util.concurrent.Phaser;
public class Main {
public static void main(String[] args) {
Phaser phaser = new Phaser(3);
Runnable task = () -> {
System.out.println(Thread.currentThread().getName() + " — фаза 1");
phaser.arriveAndAwaitAdvance();
System.out.println(Thread.currentThread().getName() + " — фаза 2");
};
new Thread(task).start();
new Thread(task).start();
new Thread(task).start();
}
}
👀 Phaser особенно полезен для задач с несколькими этапами синхронизации — например, симуляций, параллельных вычислений или координации батчевых операций
➡️ Easy Java | #Теория