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 2db01bf88c67879c4a96bfe859862341c9d8013b..afcaf001553cc1277b3c60ad3f78c4c038da6328 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 d8af72c965543160a5bb3f256b3a2c42d8337038..7d4f610d1633ed7cff28474091bb90e2c510e97e 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(); + } } }