8000 improvement: Optimized NioReactor stop() (Reactor Pattern) (#1930) · axinno1/java-design-patterns@6988319 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6988319

Browse files
authored
improvement: Optimized NioReactor stop() (Reactor Pattern) (iluwatar#1930)
* Optimized NioReactor stop() * Optimized ThreadPoolDispatcher stop()
1 parent 4dcc20b commit 6988319

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

reactor/src/main/java/com/iluwatar/reactor/framework/NioReactor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,11 @@ public void start() {
9696
* @throws IOException if any I/O error occurs.
9797
*/
9898
public void stop() throws InterruptedException, IOException {
99-
reactorMain.shutdownNow();
99+
reactorMain.shutdown();
100100
selector.wakeup();
101-
reactorMain.awaitTermination(4, TimeUnit.SECONDS);
101+
if (!reactorMain.awaitTermination(4, TimeUnit.SECONDS)) {
102+
reactorMain.shutdownNow();
103+
}
102104
selector.close();
103105
LOGGER.info("Reactor stopped");
104106
}

reactor/src/main/java/com/iluwatar/reactor/framework/ThreadPoolDispatcher.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ public void onChannelReadEvent(AbstractNioChannel channel, Object readObject, Se
6464
@Override
6565
public void stop() throws InterruptedException {
6666
executorService.shutdown();
67-
executorService.awaitTermination(4, TimeUnit.SECONDS);
67+
if (executorService.awaitTermination(4, TimeUnit.SECONDS)) {
68+
executorService.shutdownNow();
69+
}
6870
}
6971
}

0 commit comments

Comments
 (0)
0