当前位置: 首页 > news >正文

BIO、NIO、AIO的区别

BIO、NIO、AIO 是 Java 中用于处理 网络通信或 I/O 操作的三种方式。

1、BIO(Blocking I/O) -- 同步阻塞

  • 每个请求一个线程,线程阻塞等待数据。
  • 数据未准备好,线程就会一直阻塞,直到有数据可读/写。
  • 简单,但 线程资源开销大,扩展性差
  • 适用于客户端连接数少(如管理系统、工具后台)。
ServerSocket server = new ServerSocket(8080);
Socket client = server.accept(); // 阻塞等待连接
InputStream in = client.getInputStream();
int data = in.read(); // 阻塞等待数据

2、NIO(Non-blocking I/O)-- 同步非阻塞

  • 使用 Selector + Channel 实现 单线程处理多连接
  • 线程通过轮询检查是否有就绪事件。
  • 数据未准备好时不会阻塞,而是继续处理其他事件。
  • 适用于高并发服务器,如聊天室、游戏服务器。
Selector selector = Selector.open();
ServerSocketChannel server = ServerSocketChannel.open();
server.configureBlocking(false);
server.register(selector, SelectionKey.OP_ACCEPT);while (true) {selector.select(); // 阻塞等待就绪事件Set<SelectionKey> keys = selector.selectedKeys();// 遍历处理就绪事件
}

3、AIO(Asynchronous I/O)-- 异步非阻塞

  • 操作完成后通过回调函数进行通知,完全异步。
  • 不需要轮询,减少 CPU 占用。
  • 使用底层操作系统的异步 I/O 支持(如 Linux 的 epoll + aio)。
  • 适用于高并发并对延迟要求高的系统,如异步文件传输、微服务网关。
AsynchronousServerSocketChannel server = AsynchronousServerSocketChannel.open().bind(new InetSocketAddress(8080));
server.accept(null, new CompletionHandler<AsynchronousSocketChannel, Void>() {public void completed(AsynchronousSocketChannel client, Void attachment) {// 处理客户端连接}public void failed(Throwable exc, Void attachment) {// 处理失败}
});

BIO/NIO/AIO 本质上是 I/O 模型,不仅用于网络通信(如 Socket),也适用于 文件读写、磁盘、数据库连接等所有输入/输出操作(I/O)。它们是 Java 对于底层操作系统 I/O 能力的封装方式。我们使用的时候一般会直接使用封装好的通信框架,比如Netty、gRPC等。

每天做一点点,往目标前进一点点,你就会成功。-- 烟沙九洲

相关文章:

  • GAMES202-高质量实时渲染(Assignment 4)
  • 你应该使用的 php 加解密函数
  • 【开发技术】Abp.vnext下的JWT处理,添加多种认证处理方式
  • ES Serverless 8.17王牌发布:向量检索「火力全开」,智能扩缩「秒级响应」!
  • 完整的加密解密aes
  • C#中清空DataGridView的方法
  • rk3568 , mipi 屏幕调试(3588s 可以显示,但是3568 不能显示)
  • 【堆垛策略】设计方法
  • NFT模式:数字资产确权与链游经济系统构建
  • BeckHoff -->电脑与PLC连接
  • 今天做的力扣SQL
  • 基于FPGA的PID算法学习———实现P比例控制算法
  • 轻量级屏蔽文件管理方案
  • 深入浅出JavaScript中的ArrayBuffer:二进制数据的“瑞士军刀”
  • 端口扫描介绍及使用(学习笔记)
  • 苍穹外卖-day02
  • Profinet转CAN网关如何实现profinet与can协议互转
  • C++中auto和auto
  • 即梦图片 3.0 智能参考全量上线,开启 AI 设计零门槛新时代
  • 在 Windows 11 上创建新本地用户账户
  • 关于网站建设心得体会/必应搜索国际版
  • 保定网站制作套餐/腾讯企点app下载安装
  • 京东网站建设费用/发布软文网站
  • 12306网站做的好垃圾/大连网络推广公司哪家好
  • 交党费网站建设银行/百度信息流广告怎么收费
  • 展示类网站开发费用/酒店线上推广方案有哪些