NIO 终结者

传统IO请求等待主要在1.等待数据就绪 2.将数据从内核缓冲区到用户进程缓冲区互相拷贝过程

 

传统一连接一线程 请求多的时候服务端需要开辟很多线程消耗资源 最主要的这些消耗并不是都消耗在业务逻辑的执行上面 好多在io等待上面 (通过visualvm监控服务后台可以看出很多都是wait状态) 这个等待的过程是阻塞的,直到完成为止。

那么是不是可以将这些等待利用起来 让一个线程去等呢?如果有了这样一个线程去等待 那么大量请求过来是不是服务端就不需要开辟那么多线程呢?

 

NIO出现主要就是为了解决这件事情的。

NIO+REACTOR模式 基于事件机制: 这个时候读写就不再是阻塞的了 之前每个线程的操作都是固定的 读 执行 写 线程按照这个顺序去做事 读和写都必须等,等到真正的数据到来 可读取 可写入为止。时间就消耗在这里。

NIO有个专门的线程去等可读取可写入 等到时机到了 通过事件通知你去做事情 这样你的线程就没有去等待,都是用来的执行的,利用率非常高,利用率高 相对线程数可以少了。

 

具体如何通知:

最常见的

1.在启动的时候注册 Connect事件处理器到REACTOR

2.Connect连接事件来了 REACTOR调用到我的Connect执行处理器里面 在里面我可以注册个读取事件等待读事件发生。

3.可读时间发生后 REACTOR会调用读取处理器 处理完读取业务逻辑注册写事件

4.写事件发生了 REACTOR会调用写处理器 写入流。

 

这个过程中所有IO的等待都在REACTOR里面 如果REACTOR是一个线程的话 那么就消耗一个线程而已。

 

REACTOR读写具体发生了什么事情:

REACTOR读写时非阻塞的不能读取或者写入的时候可以去监视其他的IO这样单线程 扫描所有的IO就成了可能。

 

非阻塞让一切变得可能。酷   马上就是十一假期了。。。。。。。。。。。。。。。。。大家节日快乐

 

weixin063传染病防控宣传微信小程序系统的设计与实现+springboot后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值