课件和 Demo 地址
https://github.com/geektime-geekbang/geek_netty
作者回复: 估计这个关闭复杂的你都怀疑关闭有那么简单么?问的我不禁回头翻了下dubbo/hadoop和做过的项目的代码了,还好都是下面2句话:
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
所以放心使用吧!
作者回复: 给你举2个例子啊:
1 比如请求刚建立的时候,那个建立的请求,不是要register么,例如注册读事件?那个register就是一个task。
2 你的业务如果不独立出一个线程池来处理,你不就复用IO线程了么?那你的业务处理这个事情就封装成task了
3 其他所有的handler,类似第二点,只要和io复用在一起,那就成一个task来执行了。所以才有了io和普通的task的比例ioratio一说。
作者回复: 谢谢肯定,就是普通话不标准......
作者回复: 这个问题本身和netty没有关系,讨论的是java程序的优美关闭问题了。这
两个一般都是放一起用的,信号是为了触发你来关,hook是让关闭的时候别忘记清理,所以一般都是配合,所以可以置换成别的方式,比如假设你是http服务器,你可以不用信号量而直接用http api调用来触发关闭,例如jennkins:
http://<jenkins.server>/safeExit
作者回复: 只能说太狠了,😂
作者回复: 是的,channel关闭了,这块逻辑也挺乱的,而且经过几次改变,连维护者的那些人也迷糊的很,大体思路就是不保证所有请求了,不然时间无法保证,当然也会尽量。所以不要依赖它的行为,而是指望客户端自己去重试什么的。
作者回复: 你服务要上新版本的时候,或者你的软硬件升级的时候,比如升级os,升级更好的机器,你都需要重启的对不对?重启,自然想优美点,不能直接拔插座吧,哈哈,所以肯定想着优美关闭的。
作者回复: 谢谢,感觉有的时候在“泡”代码感觉,过一段时间看看,然后又能多理解一些细节,哈哈
作者回复: 是的,现在我还是迷惘的,哈哈,不过好在,我发现netty的那些创始人也不是都懂,一起阿Q了一下。
作者回复: 读了三遍你的表述,没有觉得你哪里说的不对,和我理解差不多。哈哈