文章目录
网络I/O模型
- 网络I/O模型
- BIO模型
- NIO模型
- AIO模型
- 对比总结
我们知道,UNIX环境下常见的网络I/O模型有5种:
- 同步阻塞
- 同步非阻塞
- I/O复用
- 信号驱动
- 异步非阻塞
那么基于上述五种模型,Java中,随着NIO和AIO(NIO 2.0)的引入,一般具有以下三种网络编程模型:
- BIO
- NIO
- AIO
这次,我们就简单聊聊这三种网络编程模型。
BIO模型BIO是一个经典的网络编程模型,是通常我们实现一个服务器端程序的过程。
步骤如下:
- 主线程accept请求阻塞。
- 请求到达,创建新的线程来处理这个socket,完成对客户端的响应。
- 主线程继续accept下一个请求。
这个模型的一个明显的缺点: 当客户端连接快速增长时,服务器端创建的线程也会骤增,系统性能可能会骤降。
因此,在该模型的基础上,可以创建线程池,从而避免对每个客户端线程都创建一个新的服务器端线程,进而提升性能(创建线程是很耗费资源的,