NIO 三大核心组件

张开发
2026/4/13 2:58:02 15 分钟阅读

分享文章

NIO 三大核心组件
NIO 三大核心组件Java NIONew IO / Non-blocking IO是非阻塞、面向缓冲区的 IO 模型核心就是3 个组件Channel通道 Buffer缓冲区 Selector选择器一、三大核心组件总览组件作用一句话理解Buffer缓冲区数据读写的载体数据的“集装箱”所有读写都必须经过它Channel通道数据传输的通道数据的“高速公路”连接文件/网络Selector选择器监听多路通道一个线程管理成千上万个连接的“总管”二、逐组件详解1. Buffer缓冲区核心NIO 所有数据都通过 Buffer 读写本质一块可读写的内存数组方向Channel ↔ Buffer双向传输对比 BIOBIO 直接操作流NIO 必须先放 Buffer重要属性capacity容量固定position当前读写位置limit读写上限常用类型ByteBuffer最常用网络通信IntBuffer、LongBuffer、CharBuffer等核心方法buffer.put()// 写入数据buffer.flip()// 切换为读模式关键buffer.get()// 读取数据buffer.clear()// 清空准备下次写入2. Channel通道核心数据传输的通道双向、非阻塞、可异步像“流”但比流强大可以读也可以写流单向可以异步读写必须配合 Buffer 使用常用 ChannelSocketChannelTCP 客户端ServerSocketChannelTCP 服务端FileChannel文件 IO工作模式客户端 → Channel → Buffer → 服务端 服务端 → Buffer → Channel → 客户端3. Selector选择器【NIO 灵魂】核心一个线程管理多个 Channel实现 IO 多路复用作用监听多个通道的事件连接、接收、读、写优势单线程 → 管理上万连接资源消耗极低高并发网络编程必备监听 4 种事件OP_ACCEPT有新连接OP_CONNECT连接成功OP_READ有数据可读OP_WRITE可写数据工作流程把多个 Channel 注册到 SelectorSelector 阻塞等待事件有事件触发 → 处理对应 Channel循环执行三、三者关系图极简版一个 Selector ↓ 管理 多个 Channel连接 ↓ 传输 Buffer数据载体一句话总结三者关系Selector 管理多个 Channel每个 Channel 读写数据都必须通过 Buffer。四、NIO 核心优势非阻塞连接不读写时线程不会阻塞IO 多路复用单线程管理海量连接面向缓冲区数据读写更高效高并发、低资源适合高性能服务器总结Buffer装数据Channel传数据Selector管连接

更多文章