Java中三种I/O模型 BIO,NIO,AIO
创始人
2024-03-23 16:16:44
0

UNIX 系统下, IO 模型一共有 5 种: 同步阻塞 I/O同步非阻塞 I/OI/O 多路复用信号驱动 I/O 和异步 I/O

这也是我们经常提到的 5 种 IO 模型

(1)同步阻塞I/O模型

 

 应用程序发起read调用后,一直处于阻塞状态

内核开始准备数据,直到把数据拷贝到应用程序,应用程序才被唤醒

(2)同步非阻塞 IO 模型

 应用程序会一直发起 read 调用,避免了一直阻塞

直到数据就绪了,应用程序再次发起调用的时候,应用程序才进入阻塞状态,当数据拷贝完成,应用程序才被唤醒

相比于同步阻塞 IO 模型,同步非阻塞 IO 模型确实有了很大改进。通过不断发起read调用,避免了一直阻塞

但是,这种 IO 模型同样存在问题:应用程序不断进行 I/O 系统调用轮询数据是否已经准备好的过程是十分消耗 CPU 资源的

这个时候,I/O 多路复用模型 就上场了

(3)I/O 多路复用模型 

 线程首先发起 select 调用,询问内核数据是否准备就绪,等内核把数据准备好了,内核给应用程序发送一个ready信号,此时应用程序发起read调用,应用程序进入阻塞状态,等数据拷贝完应用程序被唤醒

IO 多路复用模型,通过减少无效的系统调用,减少了对 CPU 资源的消耗

(4)异步I/O

 应用程序进行read调用后,会直接返回,不会阻塞在那里

当内核拷贝完数据后,通知应用程序

Java中有三种I/O模型 BIO,NIO,AIO

1.BIO Blocking I/O

BIO属于同步阻塞I/O模型

当应用程序不多的时候,没问题,但是当面对十万甚至百万级连接的时候,传统的 BIO 模型是无能为力的。因此,我们需要一种更高效的 I/O 处理模型来应对更高的并发量。

2.NIO (Non-blocking   I/O)

 对于高负载、高并发的(网络)应用,应使用 NIO

NIO中有一个非常重要的选择器 ( Selector ) 的概念,也可以被称为 多路复用器。通过它,只需要一个线程便可以管理多个客户端连接。当客户端数据到了之后,才会为其服务

3. AIO (Asynchronous I/O)

它是异步 IO 模型

目前来说 AIO 的应用还不是很广泛。Netty 之前也尝试使用过 AIO,不过又放弃了。这是因为,Netty 使用了 AIO 之后,在 Linux 系统上的性能并没有多少提升。

总结:

 

相关内容

热门资讯

原创 打... 打完乌克兰就收手,俄方拍着胸脯承诺北约和欧盟,可以立字据为证。 (俄方向北约承诺,打完乌克兰就收手...
政策纾困与转型升级并举 中国乳... 新华社北京12月27日电 题:政策纾困与转型升级并举 中国乳业迎来破局窗口期 新华社记者谢希瑶 乳制...
男子将女子约至酒店后杀害,女子... 12月27日,南都N视频记者从山东省聊城市中级人民法院获悉,山东男子董某与女子陶某曾是恋人关系,后分...
杨伟民:刺激消费政策应该逐步转... 12月27日,中国财富管理50人论坛2025年会在京举行,第十三届全国政协经济委员会副主任杨伟民在会...
从KS直播异常事件切入,湖南芙... 12月22日晚,针对网络平台直播异常引发的社会关注事件,湖南芙蓉律师事务所围绕“黑灰产攻击、平台责任...
出行观 | 智驾出关“水土不服... (文/观察者网 高莘)据香港《南华早报》12月26日报道,香港有关部门将要调查一名违反“粤车南下”政...
全国人大常委会关于《中华人民共... 全国人民代表大会常务委员会关于 《中华人民共和国刑事诉讼法》 第二百九十二条的解释 (2025年12...
渊亭信息科技申请基于检索增强生... 国家知识产权局信息显示,厦门渊亭信息科技有限公司申请一项名为“基于检索增强生成的智能政策问答方法、系...
政策纾困与转型升级并举,中国乳... 乳制品行业是一二三产业深度融合的重要行业。近日,商务部一则公告引发外界对于这一行业发展形势的关注。 ...
重庆荣豪律师事务所:医疗纠纷处... 推荐指数:★★★★★ 在医疗纠纷频发的当下,如何高效、专业地处理医疗纠纷成为众多患者及其家属、医疗机...