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

一、捋顺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

java netty socket_Java-彻底弄懂netty-原来netty是这样启动的-知识铺相关推荐

  1. 自学Java day24 一篇文章弄懂mySQL基础命令 从jvav到架构师

    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系统. 本篇采用 m ...

  2. java netty能做什么_开发:Netty快速入门,一看就懂!

    很早以前就写过关于 Netty 的使用,最近发现还有网友在看之前写的那篇 Netty 文章,个人感觉那时候写的很粗糙,怕影响同行的阅读质量,所以决定重新写一些关于 Netty 的文章,补充以前的不足. ...

  3. 一文弄懂-《Scalable IO In Java》

    目录 一. <Scalable IO In Java> 是什么? 二. IO架构的演变历程 1. Classic Service Designs 经典服务模型 2. Event-drive ...

  4. 一张图弄懂java线程的状态和生命周期

    转载自 一张图弄懂java线程的状态和生命周期 上图是一个线程的生命周期状态流转图,很清楚的描绘了一个线程从创建到终止的过程. 这些状态的枚举值都定义在java.lang.Thread.State下 ...

  5. deque stack java_一文弄懂java中的Queue家族

    简介 java中Collection集合有三大家族List,Set和Queue.当然Map也算是一种集合类,但Map并不继承Collection接口. List,Set在我们的工作中会经常使用,通常用 ...

  6. java netty 面试_Java 200+ 面试题补充② Netty 模块

    让我们每天都能看到自己的进步.老王带你打造最全的 Java 面试清单,认真把一件事做到最好. 1.Netty 是什么? Netty 是一款基于 NIO(Nonblocking I/O,非阻塞IO)开发 ...

  7. 一文弄懂Java中线程池原理

    在工作中,我们经常使用线程池,但是你真的了解线程池的原理吗?同时,线程池工作原理和底层实现原理也是面试经常问的考题,所以,今天我们一起聊聊线程池的原理吧. 为什么要用线程池 使用线程池主要有以下三个原 ...

  8. java接口防抖_彻底弄懂节流和防抖

    节流和防抖 这两个东西,你肯定听过,就是两种优化浏览器性能的手段.相关文章你肯定也看过,如果还是不太清楚,没关系,看完这篇短文,相信你能轻松理解其中差别. 防抖(deounce) 我们先说防抖吧,这里 ...

  9. 一文弄懂Flink网络流控及反压

    一文弄懂Flink网络流控及反压 1. 为什么需要网络流控? 2. 网络流控的实现:静态限速 3. 网络流控的实现:动态反馈/自动反压 3.1 案例一:Storm 反压实现 3.2 案例二:Spark ...

最新文章

  1. 第3关:4位快速加法器设计
  2. centos 日志切割_CentOS下的日志切割
  3. 如何删除chrome地址栏里面曾经输错的地址
  4. 对抗新冠也用「梯度下降」,进化生物学家靠这个预测病毒进化方向
  5. 大学计算机基础python学多久_怎么自学python,大概要多久?
  6. 表单开发(二):获取单选按钮,多行文本框,下拉菜单,捆绑元素数据,用户注册
  7. react项目启动invalid host header问题
  8. Linux打开rtf文档,在linux下设置开机自动启动程序的方法_精品.rtf
  9. Day-17: 网络编程
  10. android gradle错误,Android studio gradle错误与顶级异常
  11. 六级词汇打卡第二天(二)
  12. python有什么用-我们为什么要选择学习python?学习python有什么用?
  13. 可以批量把Word文件转成JPG的软件工具
  14. 积性函数是什么 超级明白的敷衍介绍
  15. Android蓝牙系统框架和代码架构
  16. python画一个爱心
  17. Shader消散特效(如回城)
  18. Hexo+GitHubPages搭建个人博客网站
  19. linux date 计算时间差,linux shell date 时间运算以及时间差计算方法
  20. 生成带参数的微信二维码

热门文章

  1. change all day checkbox in Fiori ui
  2. where is path tag generated
  3. OPA 5 - CreateButtonTest creates CreateButtonSteps
  4. SAP UI5 sap.m.ListMode - ModesingleSelectMaster
  5. 如何查看某个js 变量 runtime 类型
  6. 通过debug 修改SE16里的table content
  7. 检测Product 被其他business transaction 引用的小程序
  8. 在product search result里点击某个product出现白屏问题
  9. 一个最简单的例子学会使用nodejs redis库进行数据库操作
  10. SAP CDS view里,什么时候用left join,什么时候用association