BIO、NIO、多路复用IO、AIO
BIO
阻塞IO,当用户发送一个请求时,系统还没有准备好数据的话,就会处于一个阻塞状态,一直等待数据准备好返回给用户之后,才能再发送下一个请求。
图解如下
NIO
非阻塞IO,当用户发送一个请求时,系统还没有准备好数据的话,立马返回数据还没准备好的消息
,然后用户继续发送同一请求,直到接收到准备好的数据为止。
图解如下
多路复用IO
异步阻塞IO,redis就是使用这种IO模型,当用于发送一个请求时,系统还没有准备好数据的话,系统会对用户的这个请求进行标记,用户会对这个请求进行监听。
用户可以发送多个其他请求
,如果第一次的请求依旧没有准备好数据,则多个其他请求
会被阻塞。
当数据准备好时,系统会通知用户第一次请求的数据已经准备好,然后用户就再次发送这个请求,去请求并接收数据。
图解如下
AIO
异步非阻塞IO,当用户发送一个请求时,无论是否准备好数据都返回结果,用户可以发送其他请求;
此时用户开启监听数据是否准备好,系统标记用户的这个请求,当数据准备好时,等到准备好数据之后,通知用户数据已经准备好,用户再次发送这个请求
去请求并接收数据。
图解如下