diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java b/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java index 2db01bf88..afcaf0015 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java @@ -96,9 +96,11 @@ public class NioReactor { * @throws IOException if any I/O error occurs. */ public void stop() throws InterruptedException, IOException { - reactorMain.shutdownNow(); + reactorMain.shutdown(); selector.wakeup(); - reactorMain.awaitTermination(4, TimeUnit.SECONDS); + if (!reactorMain.awaitTermination(4, TimeUnit.SECONDS)) { + reactorMain.shutdownNow(); + } selector.close(); LOGGER.info("Reactor stopped"); } diff --git a/reactor/src/main/java/com/iluwatar/reactor/framework/ThreadPoolDispatcher.java b/reactor/src/main/java/com/iluwatar/reactor/framework/ThreadPoolDispatcher.java index d8af72c96..7d4f610d1 100644 --- a/reactor/src/main/java/com/iluwatar/reactor/framework/ThreadPoolDispatcher.java +++ b/reactor/src/main/java/com/iluwatar/reactor/framework/ThreadPoolDispatcher.java @@ -64,6 +64,8 @@ public class ThreadPoolDispatcher implements Dispatcher { @Override public void stop() throws InterruptedException { executorService.shutdown(); - executorService.awaitTermination(4, TimeUnit.SECONDS); + if (executorService.awaitTermination(4, TimeUnit.SECONDS)) { + executorService.shutdownNow(); + } } }