From 69883196d29c1c39dec325f088ee834e11e382e5 Mon Sep 17 00:00:00 2001 From: CharlieYu <791314183@qq.com> Date: Fri, 24 Dec 2021 00:10:17 +0800 Subject: [PATCH] improvement: Optimized NioReactor stop() (Reactor Pattern) (#1930) * Optimized NioReactor stop() * Optimized ThreadPoolDispatcher stop() --- .../java/com/iluwatar/reactor/framework/NioReactor.java | 6 ++++-- .../iluwatar/reactor/framework/ThreadPoolDispatcher.java | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) 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(); + } } }