这个问题容易混,是因为大家把内核里的 IO 模型和框架对外提供的编程体验放在一起说了。Netty 底层依赖 Java NIO,在常见 Linux 环境下本质上跑在多路复用能力之上,但在使用方式上又呈现出明显的异步事件驱动特征。
底层为什么说它是多路复用
Netty 的核心能力建立在 Selector 这类机制上。一个线程可以同时关注很多连接,等内核通知哪些连接可读可写后再统一处理,这就是多路复用思路。
为什么又常被说成异步
因为业务代码通常不是自己阻塞等数据,而是注册回调、监听事件、收到通知后再处理。从开发者视角看,Netty 更像异步非阻塞框架。
两种说法怎么统一理解
可以把多路复用理解成底层 IO 实现,把异步事件驱动理解成框架层暴露出的编程模型。两者不冲突,只是描述的层次不同。
结论
Netty 底层主要依赖多路复用 IO,对外则提供异步、非阻塞、事件驱动的开发体验。
正文完




