JAVA NIO开发需要知道的Netty精粹
admin
2021-01-07 08:40:10
0

Netty是个高效的JAVA NIO框架,总体框架基于异步非阻塞的设计,基于网络IO事件驱动,主要贡献在于可以让用户基于Netty提供的API快速开发高性能、高可靠性的网络应用。这篇文章主要是介绍Netty框架的基础技术——JAVA NIO。这时候可能会有同学会有点小疑问,是异步IO(AIO)么?然而并不是,虽然JDK7也提供了异步IO(AIO)的接口,但是Netty曾经尝试过某个小版本,但是效果和NIO相比并没有什么优势,因此后面的版本Netty也把对AIO的支持废弃了,今天我们就来扒一下JAVA NIO。四种IO模型简述

我们先从四种IO模型开始扒起,常见的IO模型有四种(这四种模型在网络上也有很多很多的资料,为较少篇幅本片将这部分内容压缩一下):

同步阻塞(Blocking IO):最简单的一种IO模型,用户线程在进行IO操作的时候通常是个系统调用,用户线程会由用户空间进入内核空间,内核空间数据包准备好后会将数据拷贝到用户空间,这个时候线程在用户态继续执行。

同步非阻塞(Non-blocking IO):同步非阻塞IO即在同步阻塞的基础之上将socket设置为NONBLOCK。这样用户线程在发起IO操作之后可以立即返回,但是用户线程需要不断轮询来请求数据。

IO多路复用(IO Multiplexing):即Reactor设计模式,多路复用模型从流程上和同步阻塞的区别不大,主要区别在于操作系统为用户提供了同时轮询多个IO句柄来查看是否有IO事件的接口(如select),这从根本上允许用户可以使用单个线程来管理多个IO句柄的问题。

异步IO(Asynchronous IO):即Proactor设计模式。在异步IO模型中,用户不需要去轮询IO事件,然后才进行数据的读取,处理;在异步IO模型中,IO事件就绪的时候,内核会开启一个独立的内核线程去执行执行IO操作,实现真正的异步IO。这个时候用户线程可以直接读取内核线程准备好的数据。

相关内容

热门资讯

转正申请个人工作总结 转正申请个人工作总结(通用10篇)  忙碌而又充实的工作已经告一段落了,回顾这段时间以来的工作成果,...
社会保险工作总结 社会保险工作总结5篇  【篇一:社会保险个人工作总结】  今年,我市的社会保险工作在市委、市政府的正...
小学音乐上学期教研组工作总结 小学音乐上学期教研组工作总结  音乐课是我国教育体系中为数不多的,培养孩子艺术素养的课程。接下来小编...
后备干部工作总结 后备干部工作总结后备干部工作总结(范文)一、上级交办事项落实情况1、11月份物资部考核数据查询与确认...
健康档案个人工作总结 健康档案个人工作总结(通用24篇)  时间过得真快,一段时间的工作已经告一段落了,回顾过去这段时间的...
教学督导工作总结 教学督导工作总结(精选14篇)  人生天地之间,若白驹过隙,忽然而已,回眸过去这段时间的成果,一定承...
综合治税工作总结 综合治税工作总结  总结是事后对某一阶段的学习、工作或其完成情况加以回顾和分析的一种书面材料,它可以...
二次函数的知识点总结 二次函数的知识点总结  各位同学们,大家好哦,小编为大家带来了二次函数的知识点总结哦,一起看看吧! ...
青年教师的个人年度工作总结 青年教师的个人年度工作总结(精选5篇)  不经意间,一段时间的工作已经结束了,回顾过去这段时间的工作...
小学三年级教师工作总结 精选小学三年级教师工作总结三篇  总结是在某一时期、某一项目或某些工作告一段落或者全部完成后进行回顾...