Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. final Phaser phaser = new Phaser(1);
  2. List<Runnable> runnables = getHelloWorldTasks(15);
  3.                
  4. for (final Runnable runnable : runnables) {
  5.   phaser.register();
  6.   new Thread() {
  7.     public void run() {
  8.       runnable.run();
  9.                                        
  10.       if(phaser.getArrivedParties()==1) {
  11.         int phaserNum = phaser.arrive();
  12.         //Some Logic
  13.         try {
  14.           Thread.sleep(5000);
  15.           phaser.awaitAdvance(phaserNum);
  16.           System.out.println("After Sleep");
  17.         } catch (InterruptedException e) {
  18.            e.printStackTrace();
  19.         }
  20.       } else {
  21.         phaser.arriveAndAwaitAdvance();
  22.       }
  23.     }
  24.   }.start();
  25. }
  26.                
  27. phaser.arriveAndAwaitAdvance();
  28. System.out.println("END");