什么是 AIO、BIO和NIO?

本文对比了Java中的三种I/O模型:BIO(阻塞),NIO(非阻塞),和AIO(异步非阻塞)。BIO适合连接数小的简单场景,NIO适合连接数多的轻操作,AIO则适用于高并发且连接复杂的重操作场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试回答

BIO (Blocking I/O): 同步阻塞 I/O,是 JDK1.4 之前的传统 IO 模型。线程发起 IO 请求后,一直阻塞,直到缓冲区数据就绪后,再进入下一步操作。

NIO(Non-Blocking I/O):同步非阻塞 IO,线程发起 IO 请求后,不需要阻塞,立即返回。用户线程不原地等待 IO 缓冲区,可以先做一些其他操作,只需要定时轮询检查 IO 缓冲区数据是否就绪即可。

AIO(Asynchronous I/O): 异步非阻塞 I/O 模型,线程发起 IO 请求后,不需要阻塞,立即返回,也不需要定时轮询检查结果,异步 IO 操作之后会回调通知调用方。

知识扩展

Java 中的 BIO、NIO、AIO 分别适用哪些场景?

BIO 方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4 以前的唯一选择,但程序直观简单易理解。

NIO 方式适用于连接数目多且链接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK 1.4 开始支持。

AIO 方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用 OS 参与并发操作,编程比较复杂,JDK 7 开始支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

协享科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值