NIO 三大核心组件

NIO 三大核心组件

Java NIO(New IO / Non-blocking IO)是非阻塞、面向缓冲区 的 IO 模型,核心就是 3 个组件
Channel(通道) + Buffer(缓冲区) + Selector(选择器)


一、三大核心组件总览

组件 作用 一句话理解
Buffer(缓冲区) 数据读写的载体 数据的"集装箱",所有读写都必须经过它
Channel(通道) 数据传输的通道 数据的"高速公路",连接文件/网络
Selector(选择器) 监听多路通道 一个线程管理成千上万个连接的"总管"

二、逐组件详解

1. Buffer(缓冲区)

核心:NIO 所有数据都通过 Buffer 读写

  • 本质:一块可读写的内存数组
  • 方向:Channel ↔ Buffer(双向传输
  • 对比 BIO:BIO 直接操作流,NIO 必须先放 Buffer
重要属性
  • capacity:容量(固定)
  • position:当前读写位置
  • limit:读写上限
常用类型
  • ByteBuffer(最常用,网络通信)
  • IntBufferLongBufferCharBuffer
核心方法
java 复制代码
buffer.put()     // 写入数据
buffer.flip()    // 切换为读模式(关键!)
buffer.get()     // 读取数据
buffer.clear()   // 清空,准备下次写入

2. Channel(通道)

核心:数据传输的通道,双向、非阻塞、可异步

  • 像"流",但比流强大
    • 可以读也可以写(流单向)
    • 可以异步读写
    • 必须配合 Buffer 使用
常用 Channel
  • SocketChannel:TCP 客户端
  • ServerSocketChannel:TCP 服务端
  • FileChannel:文件 IO
工作模式
复制代码
客户端 → Channel → Buffer → 服务端
服务端 → Buffer → Channel → 客户端

3. Selector(选择器)【NIO 灵魂】

核心:一个线程管理多个 Channel,实现 IO 多路复用

  • 作用:监听多个通道的事件(连接、接收、读、写)
  • 优势:
    • 单线程 → 管理上万连接
    • 资源消耗极低
    • 高并发网络编程必备
监听 4 种事件
  1. OP_ACCEPT:有新连接
  2. OP_CONNECT:连接成功
  3. OP_READ:有数据可读
  4. OP_WRITE:可写数据
工作流程
  1. 把多个 Channel 注册到 Selector
  2. Selector 阻塞等待事件
  3. 有事件触发 → 处理对应 Channel
  4. 循环执行

三、三者关系图(极简版)

复制代码
一个 Selector
   ↓ 管理
多个 Channel(连接)
   ↓ 传输
Buffer(数据载体)

一句话总结三者关系:

Selector 管理多个 Channel,每个 Channel 读写数据都必须通过 Buffer。


四、NIO 核心优势

  1. 非阻塞:连接不读写时,线程不会阻塞
  2. IO 多路复用:单线程管理海量连接
  3. 面向缓冲区:数据读写更高效
  4. 高并发、低资源:适合高性能服务器

总结

  • Buffer:装数据
  • Channel:传数据
  • Selector:管连接
相关推荐
遇见火星16 小时前
Nginx限流配置:防止接口被刷,服务器稳如泰山
运维·服务器·nginx
计算机安禾16 小时前
【Linux从入门到精通】第49篇:服务器故障排查终极指南——思路决定出路
linux·运维·服务器
古月-一个C++方向的小白16 小时前
Linux——初识文件
linux·运维·服务器
北山有鸟17 小时前
编译香橙派内核
linux·运维·服务器
段一凡-华北理工大学17 小时前
【高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章06:智能决策:从经验驱动到数据驱动
网络·人工智能·数据挖掘·高炉炼铁·工业智能体·高炉炉温
小此方17 小时前
Re:Linux系统篇(八)权限篇 ·三:深度解析从 umask 位运算到粘滞位的“权力锁”
linux·运维·服务器
晨曦夜月17 小时前
进程的五大状态及特殊进程解析
linux·服务器·算法
Sarvartha18 小时前
三目运算符
linux·服务器·前端
有浔则灵18 小时前
GORM 日志与调试完全指南:从基础配置到生产实践
服务器·数据库·gorm
司南-704918 小时前
Dense结构下的 大模型系统架构研究
服务器·人工智能·后端