BIO

同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程(连接线程一一对应),有请求就要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的开销,线程会一直阻塞。

image.png NIO

同步非阻塞,服务器实现模式为一个线程处理多个请求(连接),客户端发送的连接都会注册到多路复用器上,多路复用器轮询到连接有IO请求就进行处理。
image.png
todo:多路复用器

AIO

异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的IO请求都是由操作系统先完成了再通知服务器应用去启动线程进行处理,一般适用于连接数较多且连接时间较长的应用。
todo:模型图

各种IO的使用场景

BIO:适用于连接数目比较小且固定的架构,对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,程序简单易理解。
NIO:适用于连接数角度且连接比较短(轻操作)的架构,如聊天服务器,弹幕系统,服务器间通讯等,程序较复杂,JDK1.4之后开始支持。
AIO:适用于连接数目较多且连接时间较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,程序较复杂,JDK7以后支持。

BIO

java BIO就是传统的IO,java.io包的相关类和接口
BIO:一个连接一个线程,可以通过线程池机制改善。
image.png