第一章Netty,I/O多路复用与多线程/多进程的区别
I/O 多路复用、多线程、多进程是高并发场景下三类核心的并发处理方案,结合此前讨论的NIO、Selector等相关背景,三者在资源开销、并发模型、适用场景上存在显著差异。
一、核心原理差异
I/O 多路复用
核心是单线程通过Selector同时监听成千上万个连接,仅当连接有就绪的I/O事件时才触发处理,全程无需为每个连接分配独立执行单元,底层依托操作系统epoll等机制实现事件通知。
多线程
为每个任务/连接分配独立线程执行,线程间共享进程内存空间,线程调度由操作系统内核完成,单个线程阻塞不会影响其他线程运行。
多进程
为每个任务/连接分配独立进程执行,进程拥有完全独立的内存地址空间,进程间资源完全隔离,通信需通过管道、共享内存等特殊机制实现。
二、关键维度对比
| 对比维度 | I/O 多路复用 | 多线程 | 多进程 |
|---|---|---|---|
| 资源开销 | 极低,单线程可支撑数万连接,无频繁上下文切换 | 中等,大量线程会带来高内存占用和调度开销 | 极高,进程内存完全隔离,创建销毁成本远高于线程 |
| 并发上限 | 极高,单机轻松支持10万+连接 | 有限,线程数超过CPU核心数后性能骤降 | 极低,单机进程数通常仅能到数百级别 |