Java NIO 里的线程到底在做什么

111次阅读
没有评论

理解 NIO 线程,关键是把“等待数据准备好”和“真正读写数据”这两件事拆开看。很多人以为用了 NIO 就完全没有线程阻塞,其实只是阻塞点和线程职责发生了变化。

线程先负责等事件

在典型 NIO 模型里,线程会调用 Selector 等待哪些 Channel 已经就绪。这个等待不是盯着单个连接死等,而是在统一监听一批连接的状态变化。

就绪后还要不要线程去读

要。Selector 告诉你某个连接可读,只代表数据已经准备到可以读取的阶段,真正执行 read()、解析协议、处理业务,仍然需要线程继续往下做。

NIO 节省的是什么

它节省的不是线程这个概念本身,而是减少了“一连接一线程”的浪费,让同一个线程可以管理更多连接。

结论

NIO 线程的核心职责是统一等事件、在连接就绪后触发实际读写,再把后续业务处理分发出去。

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-03-13发表,共计338字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)