Java-彻底弄懂netty-原来netty是这样启动的-知识铺

知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。

一、捋顺netty开启方式

最简单开启一个server nio

开启具体流程:

1.1 创建两个NioEventLoopGroup对象

这两个对象是netty调度模块,也相对于传统I/O编程中的大线程组。 mainGroup:监听端口,创建新连接的线程组。 workerGroup: 处理每条链路上的数据读写线程组。

mainGroup: 日常例子,一个研发项目主管,他只管接任务,不停的把任务交给助手:

workerGroup:相对于助手,是任务真正实际的操刀手。

1.2 创建serverBootstrap 对象

启动服务端,需要这个来来启动,也相对于引导类。

1.3 关联主线程组和工作线程组

serverBootstrap.group(mainGroup,workerGroup) 这种方式把两个处理线程组关联到启动类上。

1.4 指定服务端IO模型

serverBootstrap.channel(NioServerSocketChannel.class) 这种方式来指定服务端是什么I/O模型,这里选择的Nio的I/O模型。 如果需要指定为BIO,只需替换为 OioServerSocketChannel.class即可。

1.5 指定服务端连接后续处理器

serverBootstrap.childHandler() 这里添加的是ChannelInitializer 可以定义每条链路连接上来后,每条连接的数据读写,业务处理逻辑。

serverBootstrap.handler() 这里添加的也是ChannelInitializer ,这里定义的是启动处理接口。

这里很好说明 handler 与 childHandler 的区别。

还有个泛型参数:NioSocketChannel,这个类是Netty的Nio操作类型的连接。

1.6 bind(8000)

绑定本地端口 8000

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190904A0OHD900?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券