BIO、NIO、AIO的比较

目录

BIO、NIO、AIO的比较

1. 释义

BIO:同步阻塞IO模型

NIO:同步非阻塞IO模型

AIO:异步非阻塞IO模型

2. 应用场景

BIO、NIO、AIO的比较

img

1. 释义

BIO:同步阻塞IO模型

在JDK1.4之前网络通信使用的都是BIO模型,BIO模型中accept()、read()、write()、Connection()都会阻塞,BIO要同时支持处理多个客户端的连接,就必须使用多线程,即每次accept阻塞等待客户端连接对象socket,为每一个socket创建一个线程。

优势:采用多线程范式使得BIO具备了高并发能力,即同时处理多客户端连接请求,但带来新问题,随着开启线程数量增多,会消耗过多的内存资源,导致服务器变慢甚至崩溃。

NIO:同步非阻塞IO模型

采用了事件驱动的思想实现了一个多路复用器,由复用器来同时监听多个事件是否准备就绪。

优势:一个selector复用器同时可以监听多个客户端的连接及IO操作,一个selector复用器只需要一个线程处理即可,即NIO能实现一个线程来管理多个客户端连接,NIO主要处理的是有效的连接。

AIO:异步非阻塞IO模型

在JDK1.7之后提供了异步的相关通道实例,AIO提供的最大的特点是具备异步功能,需要借助操作系统,底层操作系统具有异步IO模型,异步操作的实现是在对应的read/write/accept/connection等方法异步执行,完成后会主动调用回调函数,实现一个CompletionHandler对象。

2. 应用场景

BIO:BIO方式适用于连接数量少且固定的场景,这种方式对服务器资源要求比较高, JDK1.4之前唯一的选择,程序直观简单易理解;

NIO:适用于连接数目多且业务比较轻,比如:聊天服务器 JDK1.4开始支持NIO;

AIO:适用于连接数目多且连接比较长(业务重操作),需要操作系统充分参与并发操作 JDK1.7开始支持。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值