BIO、NIO、AIO 区别

一、先记住一句话

BIO = 同步阻塞
NIO = 同步非阻塞
AIO = 异步非阻塞


二、用生活例子秒懂

1. BIO(同步阻塞)

去餐厅吃饭,必须站在窗口死等,厨师不做好你就不能动。

  • 一个连接 = 一个线程
  • 连接不读完,线程一直卡住
  • 并发低,浪费资源

2. NIO(同步非阻塞)

去餐厅吃饭,不用死等,隔一会儿去问一下好了没,没好就去干别的。

  • 一个线程 = 管理多个连接
  • 线程不卡住,轮询检查
  • 高并发、高性能

3. AIO(异步非阻塞)

点餐后直接走人,厨师做好了主动打电话通知你。

  • 完全不用等
  • 操作系统主动通知
  • 真正异步

三、核心区别(直接背)

特性 BIO NIO AIO
全称 同步阻塞IO 同步非阻塞IO 异步非阻塞IO
线程模型 1连接=1线程 1线程=多连接 依赖操作系统回调
是否阻塞 阻塞 非阻塞 非阻塞
复杂度 简单 中等 复杂
性能 很高
适用场景 连接少 高并发 高并发+长连接
Java实现 ServerSocket Java NIO AsynchronousChannel
实际使用 极少 Netty(主流) 很少用

四、底层核心区别

1. BIO

  • 面向
  • 阻塞:accept()read() 都会卡住线程
  • 无法支撑高并发

2. NIO(重点!面试必考)

三大组件:

  • Channel(通道):双向读写
  • Buffer(缓冲区):数据先放缓冲区
  • Selector(选择器):一个线程管理成千上万个连接

核心思想:一个线程 + 一个选择器 = 管理所有连接

3. AIO

  • 不需要 Selector
  • 基于回调
  • 操作系统完成IO后主动通知
  • Windows 支持好,Linux 支持一般

五、最关键结论(必须记住)

  1. BIO 是传统IO,阻塞,低并发
  2. NIO 是非阻塞,高并发,Java 后端主流
  3. AIO 是真正异步,用得少
  4. 现在高并发网络编程 = 全用 Netty(NIO 框架)

六、面试高频题(标准答案)

1. BIO、NIO、AIO 区别?

  • BIO:同步阻塞,一个连接一个线程,并发低。
  • NIO:同步非阻塞,一个线程管理多个连接,有Selector、Channel、Buffer。
  • AIO:异步非阻塞,基于回调,操作系统主动通知。

2. 为什么NIO能高并发?

因为Selector 选择器让一个线程可以监听成千上万个连接,不阻塞,资源消耗极低。

3. 企业用哪个?

NIO + Netty,几乎所有高性能框架(Dubbo、RocketMQ、Redis客户端)都用 Netty。


总结

  • BIO = 死等
  • NIO = 轮询
  • AIO = 回调通知
相关推荐
VOOHU-沃虎1 小时前
沃虎——网络变压器与RJ45集成连接器选型实战:从百兆到10G、从非PoE到4PPoE
网络
2301_773643622 小时前
华为云存储实验
网络·mysql·华为云
ylscode2 小时前
Windows 内核惊现高危提权漏洞 CVE-2026-40369:沙箱隔离失效,SYSTEM 权限唾手可得
网络·安全·安全威胁分析
jieyu11192 小时前
Wireshark使用指南【超全面】
网络·wireshark
weixin_520649873 小时前
通信【报文】
网络
志栋智能3 小时前
小步快跑:从单一场景开启超自动化巡检之旅
运维·网络·人工智能·自动化
XINERTEL3 小时前
视频卡顿花屏?专业视频质量评估测试让画质从“凭感觉”到“数据说话”
网络·测试工具·音视频·丢包
AugustRed3 小时前
Linux 运维常用命令大全(超全速查表)
运维·网络·php
正在走向自律3 小时前
远程控制软件安全对比2026:ToDesk vs 向日葵 vs TeamViewer,你的电脑钥匙交给谁更放心
网络·远程办公·远程服务