侧边栏壁纸
博主头像
沙漠渔

把過去的累積,善用到當下

  • 累计撰写 489 篇文章
  • 累计创建 295 个标签
  • 累计收到 960 条评论
标签搜索

目 录CONTENT

文章目录

IO模型BIO/NIO/AIO怎么理解?

沙漠渔
2022-08-26 / 0 评论 / 0 点赞 / 891 阅读 / 664 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-08-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

IO模型主要分类:

同步(synchronous) IO和异步(asynchronous) IO
阻塞(blocking) IO和非阻塞(non-blocking)IO
同步阻塞(blocking-IO)简称BIO
同步非阻塞(non-blocking-IO)简称NIO
异步非阻塞(synchronous-non-blocking-IO)简称AIO

BIO:同步阻塞IO

每⼀个客户端连接,服务端都会对应⼀个处理线程,对于没有分配到处理线程的连接就会被阻塞或者拒绝。相当于是⼀个连接⼀个线程。

NIO:同步⾮阻塞IO

基于Reactor模型,客户端和channel进⾏通信,channel可以进⾏读写操作,通过多路复⽤器selector来轮询注册在其上的channel,⽽后再进⾏IO操作。这样的话,在进⾏IO操作的时候再⽤⼀个线程去处理就可以了,也就是⼀个请求⼀个线程。

AIO:异步⾮阻塞IO

相⽐NIO更进⼀步,完全由操作系统来完成请求的处理,然后通知服务端开启线程去进⾏处理,因此是⼀个有效请求⼀个线程。

适用场景

BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择。
NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂。
AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持

0
广告 广告

评论区