为什么Netty的ExecutorUtil.terminate()调用ExecutionHandler.shutdownNow()?

时间:2012-09-04 13:46:14

标签: java netty

我要使用>管理客户端 - 服务器应用程序1K使用netty 3.5.1连接客户端。当我们通过重新启动服务器断开客户端连接时,有时更新会丢失并写入数据库。执行重启/关闭时,我们会关闭Netty组件,如下所示:

  • shutdown server-channel
  • 断开所有客户端(通过ChannelGroupFuture)
  • 在我们的ChannelPipeline上调用releaseExternalResources()
  • 在我们的ExecutionHandler上调用releaseExternalResources(),这是我们的ChannelPipeline的一部分(是否需要手动调用它?)

但是我想知道为什么ExecutorUtil。 terminate (由ExecutionHandler调用)在传递的ExecutorService上执行 shutdownNow ,因为 shutdownNow 排出队列中的所有现有任务并返回它们。由于ExecutorUtil。 terminate 的类型为 void ,因此不会执行任务。在ExecutorService上调用 shutdown 并等待完成是不是更合适?

1 个答案:

答案 0 :(得分:0)

这是一个很好的建议..你介意在我们的问题跟踪器上打开它的问题[1]

[1] https://github.com/netty/netty/issues