diff --git a/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java index dd1487b5cb..c022c02085 100644 --- a/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java +++ b/core-java-modules/core-java-concurrency-advanced/src/main/java/com/baeldung/concurrent/phaser/LongRunningAction.java @@ -16,12 +16,17 @@ class LongRunningAction implements Runnable { public void run() { System.out.println("This is phase " + ph.getPhase()); System.out.println("Thread " + threadName + " before long running action"); - ph.arriveAndAwaitAdvance(); + try { - Thread.sleep(20); + Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } + + System.out.println("Thread " + threadName + " action completed and waiting for others"); + ph.arriveAndAwaitAdvance(); + System.out.println("Thread " + threadName + " proceeding in phase " + ph.getPhase()); + ph.arriveAndDeregister(); } } \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-advanced/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java b/core-java-modules/core-java-concurrency-advanced/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java index a7b56e1151..88c18b5149 100644 --- a/core-java-modules/core-java-concurrency-advanced/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java +++ b/core-java-modules/core-java-concurrency-advanced/src/test/java/com/baeldung/concurrent/phaser/PhaserUnitTest.java @@ -26,13 +26,20 @@ public class PhaserUnitTest { executorService.submit(new LongRunningAction("thread-3", ph)); //then + System.out.println("Thread " + Thread.currentThread().getName() + " waiting for others"); ph.arriveAndAwaitAdvance(); + System.out.println("Thread " + Thread.currentThread().getName() + " proceeding in phase " + ph.getPhase()); + assertEquals(1, ph.getPhase()); //and executorService.submit(new LongRunningAction("thread-4", ph)); executorService.submit(new LongRunningAction("thread-5", ph)); + + System.out.println("Thread " + Thread.currentThread().getName() + " waiting for others"); ph.arriveAndAwaitAdvance(); + System.out.println("Thread " + Thread.currentThread().getName() + " proceeding in phase " + ph.getPhase()); + assertEquals(2, ph.getPhase());