Netty 如何优雅地实现退出机制及其原理

本文介绍了Java程序的优雅退出,重点讨论了Netty框架如何实现优雅退出。通过设置线程状态、处理发送队列、执行定时任务和释放资源等步骤,确保Netty在退出时能完成必要的操作。文章通过源码分析,详细阐述了NioEventLoopGroup和NioEventLoop的关闭流程,以及在实际项目中的应用。
摘要由CSDN通过智能技术生成

e.printStackTrace();

}

System.out.println(“ShutdownHook execute end…”);

System.out.println(“Sytem shutdown over, the cost time is 10000MS”);

}

}

下面我们在 Windows 环境中对通用的 Java 优雅退出程序进行测试,打开 CMD 控制台,拉起待测试程序,如下所示:

启动进程:

Netty 如何优雅地实现退出机制及其原理

查看线程信息,发现注册的 ShutdownHook 线程没有启动,符合预期:

Netty 如何优雅地实现退出机制及其原理

在控制台执行 Ctrl+C,使进程退出,示例如下:

Netty 如何优雅地实现退出机制及其原理

如上图所示,我们定义的 ShutdownHook 线程在 JVM 退出时被执行,作为测试程序,它休眠 10S 之后退出,控制台打印的相关信息如下:

Netty 如何优雅地实现退出机制及其原理

下面我们总结下通用的 Java 程序优雅退出的技术要点:

Netty 如何优雅地实现退出机制及其原理

[](()Netty 的优雅退出

==========================================================================

在实际项目中,Netty 作为高性能的异步 NIO 通信框架,往往用作基础通信框架负责各种协议的接入、解析和调度等,例如在 RPC 和分布式服务框架中,往往会使用 Netty 作为内部私有协议的基础通信框架。

当应用进程优雅退出时,作为通信框架的 Netty 也需要优雅退出,主要原因如下:

  1. 尽快的释放 NIO 线程、句柄等资源;

  2. 如果使用 flush 做批量消息发送,需要将积攒在发送队列中的待发送消息发送完成;

  3. 正在 write 或者 read 的消息,需要继续处理;

  4. 设置在 NioEventLoop 线

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值