1、IO模型是什么
IO模型可以理解为是通信双方用什么样的通道进行数据的接收和发送
2、Java支持的IO模型
Java支持三种网络编程模型/IO模式:BIO、NIO、AIO
- BIO:同步阻塞,服务器实现模型是为每个连接创建一个线程,当客户端请求服务端时就要启动一个新线程进行处理,不管这个连接要求什么数据/不要求数据
- NIO:同步非阻塞,服务器实现模式–一个线程处理多个请求,客户端发起的连接请求都会注册到多路复用器上进行轮询,一次只有一个进行IO请求
- AIO/NIO.2:异步非阻塞,当前使用的不多,AIO引入异步通道的概念,采用Proactor模式简化程序编写,当请求有效的时候才启动线程。
先有操作系统完成后才通知服务端程序启动线程去处理,一般适用于连接数较多且连接时间长的应用
3、适用场景区分
- BIO:适用于连接数目较小且固定的情况,使用BIO对服务器资源的要求很高,因为线程消耗的资源比较多,在JDK1.4之前只有BIO
- NIO:适用于连接数目多且连接/轻操作比较短的架构,比如聊天服务器、弹幕服务器等。编程复杂,从JDK1.4开始支持NIO
- AIO:适用于连接数较多且连接时间长/重操作次数多的架构。比如相册服务器等。编程复杂,JDK7之后支持