未验证 提交 69883196 编写于 作者: C CharlieYu 提交者: GitHub

improvement: Optimized NioReactor stop() (Reactor Pattern) (#1930)

* Optimized NioReactor stop()

* Optimized ThreadPoolDispatcher stop()
上级 4dcc20b7
...@@ -96,9 +96,11 @@ public class NioReactor { ...@@ -96,9 +96,11 @@ public class NioReactor {
* @throws IOException if any I/O error occurs. * @throws IOException if any I/O error occurs.
*/ */
public void stop() throws InterruptedException, IOException { public void stop() throws InterruptedException, IOException {
reactorMain.shutdownNow(); reactorMain.shutdown();
selector.wakeup(); selector.wakeup();
reactorMain.awaitTermination(4, TimeUnit.SECONDS); if (!reactorMain.awaitTermination(4, TimeUnit.SECONDS)) {
reactorMain.shutdownNow();
}
selector.close(); selector.close();
LOGGER.info("Reactor stopped"); LOGGER.info("Reactor stopped");
} }
......
...@@ -64,6 +64,8 @@ public class ThreadPoolDispatcher implements Dispatcher { ...@@ -64,6 +64,8 @@ public class ThreadPoolDispatcher implements Dispatcher {
@Override @Override
public void stop() throws InterruptedException { public void stop() throws InterruptedException {
executorService.shutdown(); executorService.shutdown();
executorService.awaitTermination(4, TimeUnit.SECONDS); if (executorService.awaitTermination(4, TimeUnit.SECONDS)) {
executorService.shutdownNow();
}
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册