Skip to content

NIO 概述

NIO(New IO / Non-blocking IO)是 JDK 1.4 引入的 IO 模型。

如果你还在用 BIO 的思维方式处理高并发场景,迟早会遇到瓶颈。NIO 提供了另一种选择。

核心组件

Buffer — 数据的中转站

Buffer 是一块可读写的内存区域,数据先读写到 Buffer,再从 Buffer 读写到 Channel。

详见:Buffer 缓冲区

Channel — 双向通道

Channel 是数据源和目的地的连接。和 BIO 的流不同,Channel 可读可写。

详见:Channel 通道

Selector — 多路复用器

Selector 实现了多路复用——用一个线程管理多个 Channel,当某个 Channel 有数据就绪时才处理。

详见:Selector 选择器

通信与对比

非阻塞通信

综合运用 Channel、Buffer、Selector,实现高性能的非阻塞 Echo 服务器。

详见:NIO 非阻塞通信

选型对比

BIO 和 NIO 是两种完全不同的 IO 模型,各有适用场景。

详见:NIO vs BIO 对比

实战案例

聊天服务器、文件传输……踩过的坑都是经验。

详见:NIO 实战

NIO.2 (JDK 7+)

JDK 7 对 NIO 进行了增强,引入了更简洁的 Path API、强大的 Files 工具类和 WatchService 文件监听。

详见:NIO.2 概述


NIO 的学习曲线比 BIO 陡峭,但理解了核心概念后,你会发现它解决的是真实问题。

下一节,我们从 Buffer 开始,深入 NIO 的世界。

基于 VitePress 构建