学习之前,我们先来了解一下 IO 模型:
①同步阻塞 IO(Blocking IO):即传统的 IO 模型。

②同步非阻塞 IO(Non-blocking IO):默认创建的 socket 都是阻塞的,非阻塞 IO 要求 socket 被设置为 NONBLOCK。注意这里所说的 NIO 并非 Java 的 NIO(New IO)库。

③多路复用 IO(IO Multiplexing):即经典的 Reactor 设计模式,有时也称为异步阻塞 IO,Java 中的 Selector 和 Linux 中的 epoll 都是这种模型(Redis 单线程为什么速度还那么快,就是因为用了多路复用 IO 和缓存操作的原因)

④异步 IO(Asynchronous IO):即经典的 Proactor 设计模式,也称为异步非阻塞 IO。

图解:

image.png
image.png
image.png
image.png


—————————————————-
四张图,读懂 BIO、NIO、AIO、多路复用 IO 的区别
https://blog.51cto.com/u_12302929/3056819