bio,aio,nio

7次阅读
没有评论

 

对于 Java 开发者来说,理解这三种 IO 模型是进阶架构师的必经之路。我们可以把 内核(Kernel) 想象成“快递公司”,把 用户线程 想象成“收件人”,来看看这三种模型的区别:


1. 阻塞 IO (Blocking IO, BIO) —— “死等快递”

这是最传统的 IO 模型。

  • 场景描述:你下单买了个东西(发起 read 请求),然后就坐在门口死死盯着路口(线程阻塞)。在快递员把货送到你手上之前,你什么都干不了,连手机都不玩(交出 CPU)。

  • 内核行为:内核查看数据没就绪,就让线程睡觉(Block)。数据就绪后,内核把数据拷贝到用户内存,再叫醒线程。

  • 缺点:一个连接对应一个线程。如果 1000 个人同时等快递,就需要 1000 个线程,系统开销极大。


2. 非阻塞 IO (Non-blocking IO, NIO) —— “狂打电话查进度”

Java NIO(New IO)的核心实现。

  • 场景描述:你下单后,回房间打游戏了。但你每隔 5 分钟就跑出来问快递员:“货到了吗?”。快递员说“没到”,你就回去接着打。

  • 内核行为:用户线程发起 read,如果数据没好,内核立即返回一个 Error。线程不会阻塞,但需要不断轮询(Polling)。

  • 特点:线程不被挂起,但轮询会极大地占用 CPU

  • 进阶(IO 多路复用):为了不盲目轮询,引入了“传达室大爷”(Selector/epoll)。1000 个人的快递都由大爷盯着,谁的到了大爷才喊谁。这就是 Netty 底层的逻辑。


3. 异步 IO (Asynchronous IO, AIO) —— “快递放门口,签收完发短信”

这是最理想的 IO 模型(Java 7 引入的 NIO 2.0)。

  • 场景描述:你下单后,直接去睡觉或忙别的了,完全不关心快递。快递公司(内核)负责把货送到你门口,甚至帮你搬进屋(拷贝数据),全部搞定后给你发个短信:“货已入库,请享用”。

  • 内核行为:用户线程发起 read 后立即去干别的。内核负责等待数据、拷贝数据。整个过程完成后,内核会通过回调(Callback)通知用户线程。

  • 特点:真正的异步。线程完全不需要关心 IO 过程,只需处理结果。


总结对比表


💡 面试官可能会问的“资深”问题:

  1. 既然 AIO 这么好,为什么 Netty 还用 NIO?

    • 回答要点:在 Linux 系统上,AIO 的底层实现不如 NIO (epoll) 成熟。NIO 配合 Reactor 模式已经能压榨出极高的性能,且兼容性更好。

  2. 结合你的思维导图:

    • 在 BIO 中,你会看到大量的线程处于 BLOCKEDWAITING 状态。

    • 在 NIO 中,线程更多处于 RUNNABLE 状态,因为它们在 Selector 上循环。

    • 利用 jstack 分析时,如果发现 nioEventLoop 线程压力过大,通常是逻辑处理太重,需要优化。

需要我帮你用 Java 代码展示一下这三种模式在 Socket 编程中的具体写法差异吗? 这能帮你更深刻地理解“回调”和“轮询”的区别。

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

摆渡资源站

文章搜索
一言一句话
-「
热门文章
某个货币持仓增长了一倍,但是 jing流入没有增加多少,为啥

某个货币持仓增长了一倍,但是 jing流入没有增加多少,为啥

  这通常是因为该货币的市值(价格)上涨抵消了持仓量的增加,或者存在某些“非交易性”的变动。 简单来...
mac brew 有没有 markdown 格式化工具

mac brew 有没有 markdown 格式化工具

  在 macOS 上通过 Homebrew (brew) 安装 Markdown 格式化工具非常方...
2026比特币稳赚指南:顶级加密交易策略全揭秘!

2026比特币稳赚指南:顶级加密交易策略全揭秘!

    关键要点 定投(DCA):仍是比特币长期积累的低风险和纪律性策略。 趋势交易和波段...
使用Java类库ta4j计算基金的布林轨

使用Java类库ta4j计算基金的布林轨

ta4j简介 对于做金融分析的从业者而言,python的ta-lib是不可或缺的技术分析库,具有简单易用、功能...
全真早晚功课简介

全真早晚功课简介

         道教的斋醮仪式很多,主要的日常宗教活动是早晚功课经。凡是道教徒每天都要上殿唪诵,所...
最新评论
333985 333985 每天都在战争,希望2026和平.
最新文章
nginx中location匹配规则与proxy_pass代理转发

nginx中location匹配规则与proxy_pass代理转发

  最近使用nginx在服务器上配置,在做路径匹配时上遇到细节上的东西,在此做记录,安装请转 win...
算法practice1进阶

算法practice1进阶

  这两个方案是面试中常见的进阶考向,尤其是当面试官追加限制条件(如“不准修改原数组”)时,方案 B...
算法practice1

算法practice1

  https://github.com/CyC2018/CS-Notes/blob/master/...
胸部爱抚是件迷人的事,如果能掌握诀窍更好──5个胸部爱抚阶段的相关诀窍

胸部爱抚是件迷人的事,如果能掌握诀窍更好──5个胸部爱抚阶段的相关诀窍

  爱抚胸部绝对是性爱前戏中最常见,同时也最重要的一环。只是,大多数的男生虽然都有迷恋女生胸部的倾向...
8招舌吻技巧

8招舌吻技巧

  舌吻技巧1:先从正常的亲嘴开始 先从普通的亲嘴开始,慢慢酝酿舌吻的情绪。保持嘴唇柔软并微微张开,...