final Phaser phaser = new Phaser(1);
List<Runnable> runnables = getHelloWorldTasks(15);
for (final Runnable runnable : runnables) {
phaser.register();
new Thread() {
public void run() {
runnable.run();
if(phaser.getArrivedParties()==1) {
int phaserNum = phaser.arrive();
//Some Logic
try {
Thread.sleep(5000);
phaser.awaitAdvance(phaserNum);
System.out.println("After Sleep");
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
phaser.arriveAndAwaitAdvance();
}
}
}.start();
}
phaser.arriveAndAwaitAdvance();
System.out.println("END");