首页 > 其他分享 >Netty优雅退出

Netty优雅退出

时间:2024-12-25 11:31:18浏览次数:6  
标签:Netty ShutdownHook 优雅 ------------- 退出 线程

Netty优雅退出| Id | Title | DateAdded | SourceUrl | PostType | Body | BlogId | Description | DateUpdated | IsMarkdown | EntryName | CreatedTime | IsActive | AutoDesc | AccessPermission |

| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------| -------------|
| 15430522| Netty优雅退出| 2021-10-20T20:13:00| | BlogPost|

va优雅退出实现:

public static void main(String[] args) {
Runtime.getRuntime().addShutdownHook(new Thread(()->{
System.out.println("ShutdownHook execute...");
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("ShutdownHook execute end..");
}));
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("application out...");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
application out...
ShutdownHook execute...
ShutdownHook execute end..

1
2
3
4
注意:

ShutdownHook 在JVM Crash、无法接收信号量、kill -9 时并不会被执行;
ShutdownHook 有多个时,执行顺序不保证;
在JVM关闭期间不能动态添加或删除ShutdownHook;
不要在ShutdownHook 中调用System.exit(),会卡住JVM导致进程无法退出。
Netty需要优雅退出的原因:

尽快释放NIO线程和句柄等资源;
需要将积压在发送队列中的待发消息发送完;
正在读或写的消息,需要继续处理;
设置在NioEventLoop线程调度器中的定时任务,需要执行或清理;
Netty优雅退出的三大类操作:

把NIO线程的状态设置为ST_SHUTTING_DOWN,不再处理新的消息;
把发送队列中的消息尽量发送完(不保证全部)、定时任务、用户注册到NIO线程的退出Hook执行完;
资源释放操作:所有Channel的释放、多路复用器的去注册和关闭、所有队列和定时任务的清空取消,最后是EventLoop线程的退出。
误区:
Netty无法保证所有消息队列的消息能处理完,原因:

待发送消息:调用优雅退出方法之后,不会立即关闭链路;
需要发送的消息:在Netty优雅退出执行期间,应用线程仍然有可能继续调用Channel发送消息,这些消息将发送失败;
3.其他Task等无法保证完全执行,看速度。
————————————————
版权声明:本文为CSDN博主「m0_37039331」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37039331/article/details/84886003

| 648658| | 2021-10-20T20:13:00| false| | 2021-10-20T20:12:57.797| true| va优雅退出实现: public static void main(String[] args) { Runtime.getRuntime().addShutdownHook(new Thread(()->{ System.out.println("ShutdownHook execute...")| Anonymous|

标签:Netty,ShutdownHook,优雅,-------------,退出,线程
From: https://www.cnblogs.com/ralphlauren/p/18621273

相关文章

  • 【C++boost::asio网络编程】有关服务端退出方法的笔记
    有关服务端退出方法的笔记C风格的信号关闭boost::asio中的关闭方式原来服务端的main函数如下intmain(){ try { boost::asio::io_contextioc; Servers(ioc,8888); ioc.run(); } catch(conststd::exception&) { } return0;}  上面弊端在......
  • 《水烟水雾》d3dx9_43.dll文件丢失,优雅解决之法
    《水烟水雾》是一款充满诗意与奇幻色彩的游戏,然而,近期不少玩家在游戏过程中遇到了d3dx9_43.dll文件丢失的问题,这不仅打断了游戏的连贯性,也影响了玩家的沉浸体验。本文将为大家提供一种优雅的解决方案,帮助玩家摆脱这一困扰。1.重新安装游戏有时,游戏文件可能因各种原因而损......
  • 【产品小白】如何优雅应对紧急需求
    目录冷静拆解真正的紧急点将“紧急项目”拆解为里程碑坚守流程,评审优先        在产品管理的世界里,紧急需求就像隐藏在暗处的“刺客”,随时可能打乱我们精心规划的工作节奏,让团队陷入混乱与忙碌之中。然而,我们必须清醒地意识到,紧急需求频繁出现绝非正常现象,它往......
  • Netty解决粘包半包问题
    1.定长,每次读取固定的数据量ChannelPipelinepipeline=ch.pipeline();pipeline.addLast(newFixedLengthFrameDecoder(10));//每条消息长度固定为10字节pipeline.addLast(newYourBusinessHandler());每条消息长度固定,接收端读取固定字节数作为一个完整的消息。粘包......
  • 在SpringBoot项目中优雅地记录日志(日志框架选型、SpringBoot默认的日志实现框架、如何
    文章目录1.前言2.日志框架选型2.1System.out.println2.2SLF4J2.2.1Log4j(已停止维护,不再介绍)2.2.2LogBack&Log4j22.3扩展:日志框架背后的故事3.SpringBoot默认的日志实现框架(Logback)4.如何使用日志框架4.1常规方法4.2使用Lombok工具库提供的@Slf4j注解4.3......
  • 千峰教育--Netty 再学习 1 网络模型概述(BIO、NIO、AIO)、BIO 逻辑实现及其局限性(单线程
    课程介绍1网络模型概述2Channel详解3Buffer详解4Selector详解5NIO综合案例-聊天室6AIO概念及实现 1网络编程IO模型介绍1.1BLockingIOBlockingIO也称BIO,及同步阻塞IO。Java的io包基于流模型实现,提供了FIle,FileInputStream,FileOutputStream等输入输出流......
  • 换工作,如何退出微软账户???(删除注册表数据)
    1.Win+r 进入输入.2.删除注意路径.3.删除注意路径.4.效果如下,清空成功......
  • 鸿蒙实战开发:网络层的艺术——优雅封装与搭建指南(上)
    在鸿蒙的广袤开发世界中,网络层作为信息交换的桥梁,其重要性不言而喻。今天,我将带领大家一同探索如何以艺术般的手法,优雅地封装鸿蒙官方的网络库,为我们的应用搭建一个高效、灵活的网络层。我们在下一篇章中,将深入阐述如何利用这一封装完善的网络库,轻松驾驭网络层的开发与使用。一、......
  • 鸿蒙实战开发:网络层的艺术——优雅封装与搭建指南(下)
    前言在前两篇文章中,我们深入探讨了网络层的封装和优化技巧。本文将带您走进网络层的实战应用,从架构设计到具体实现,一步步指导您如何使用我们精心构建的网络框架。一、网络层架构设计在鸿蒙应用开发中,一个清晰、合理的网络层架构是保证项目可维护性和扩展性的关键。以下是我们推......
  • 鸿蒙实战开发:网络层的艺术——优雅封装与搭建指南(中)
    前言在鸿蒙开发的广袤天地中,网络层的搭建与封装无疑是构建高效、稳定应用的基石。继上篇的探索之后,本文将继续深入网络层的优化之旅,揭秘如何通过类型转换器、请求查询附加器以及丰富的常量参数,将网络层的构建艺术推向一个新的高度。一、网络请求的深度优化数据类型转换器:定义与......