JAVA常见IO模型 BIO、NIO、AIO总结

BIO

Blocking IO 同步阻塞型IO。当系统进行IO读写的时候,会阻塞,直到IO读写完毕。比如调用系统Read后,需要将内核空间的数据读取到用户空间。需要等待内核空间 数据准备,数据就绪,拷贝数据,线程一直处于阻塞状态,直到拷贝数据完成。如下图:
在这里插入图片描述
BIO这种方式是一个连接对应着一个线程,会造成线程阻塞。当连接数目少的时候还能支撑住,当连接数一多会导致阻塞时间过程,影响系统的性能。因此阻塞型IO只是用于少量连接的情况。
为了使用大量连接的情况,又设计了非阻塞型IO-NIO模型。

NIO

NIO同步非阻塞型IO,系统在进行读写的过程中不会阻塞,系统性能更高。非阻塞型IO采用了多路复用的原理,将多个连接注册到一个selector上,通过一个线程就能管理多个连接。通过selector轮询的方式看那个连接上有请求,对该请求分配一个线程。这样就大大提高的效率。
在这里插入图片描述

非阻塞型IO特别适用于连接数目多,且连接时间较短的常用,比如聊天服务器。

AIO

AIO为异步IO。异步IO是基于事件和回调机制来实现的。当应用程序发起IO请求后,立马返回,可以进行其他操作。当系统IO完成后,会通知该线程,该线程继续执行之后的操作。
在这里插入图片描述
目前AIO应用不是很广泛。

总结

在这里插入图片描述
参考:
https://javaguide.cn/java/io/io-model.html#aio-asynchronous-i-o
https://blog.csdn.net/Shangxingya/article/details/110489318

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值