龙空技术网

Netty的优雅地关闭连接到底说的是什么?

極分享 73

前言:

今天同学们对“netty判断连接状态”可能比较着重,看官们都想要剖析一些“netty判断连接状态”的相关内容。那么小编在网摘上搜集了一些有关“netty判断连接状态””的相关内容,希望各位老铁们能喜欢,同学们一起来学习一下吧!

在使用netty写Socket连接的时候参考的demo,在finally中总会提到优雅地关闭连接,那么问题来了,到底怎么算是优雅地关闭什么是不优雅呢?

首先我们来看看什么是不优雅?

比如我们的笔记本电脑死机了所有按键鼠标都不好使,关机键也不好使,长按关机也不好使,这个时候的暴力手段是什么:拔电池啊!对于电脑来说这种方式相当暴力,这等于是断电操作。

而在断电的过程中有可能机器正在把缓存中的数据持久化到磁盘中,也就是说你正在写的word文档还没存储到硬盘就关机了,再打开就找不到了。

那么何种方式是优雅地操作?

断电可以,让我先把没做完的任务做一下,之后我自己关机。

也就是说,当系统收到退出指令的时候,先记一下系统是要做退出操作,不再接受新的请求了,然后把积压的任务做完,然后把各种资源进行回收,最后系统关机退出。

Netty是如何优雅地退出呢?

类似上边的操作

1、netty退出连接的时候首先发信号设置NIO的连接状态为ST_SHUTTING_DOWN状态,不再处理新的消息;

2、把队列中尚未处理完的消息处理完,把马上到期的定时任务做完等;

3、把占用的资源释放掉,把建立的Channel通道释放、把定时任务队列清空、把多路复用器关闭

4、最后退出NIO连接。

Netty大致通过以上的流程优雅地关闭连接,而其实际实现则设计到复杂的线程组、线程、链路、多路复用器、定时任务等配合操作,这里不赘述了。

标签: #netty判断连接状态 #netty socket客户端强制关闭连接