public class PhaserExample {
public static void main(String[] args) {
Phaser phaser = new Phaser(2);
new Washer(phaser).setName("Мойщик №1");
new Washer(phaser).setName("Мойщик №2");
}
static class Washer extends Thread {
final Phaser phaser;
Washer(Phaser phaser) {
this.phaser = phaser;
start();
}
@Override
public void run() {
for (int i = 0; i < 3; i++) {
System.out.println(getName() + " моет машину №" + i);
phaser.arriveAndAwaitAdvance();
}
}
}
}