• BIO通信模型(同步阻塞IO模型)

通信模型:通常有一个Acceptor 线程负责监听客户端的连接,它接收到客户端连接请求之后为每个客户端创建一个新的线程进行链路处理,处理完成之后,通过输出流应答给客户端,线程销毁。

特点:一连接一线程,一请求一应答,缺乏弹性伸缩能力

缺点:并发访问量增大后,线程数膨胀,系统性能急剧下降

IO通信

  • 伪异步IO通信模型(对同步阻塞I/O进行优化,后端通过一个线程池来处理多个客户端的请求接入)

通信模型:当前的客户端接入时,将客户端的socket封装成一个Task(实现Runnable接口)放在后端的线程池进行处理,JDK线程池维护了一个消息队列和一些活跃线程,对消息队列中的任务进行处理。

特点:线程池负责连接,M请求N应答,会产生线程池阻塞

IO通信

  • NIO通信模型(同步非阻塞)

缓冲区buffer、通道Channel、多路复用器Selector

特点:

(1)缓冲区Buffer--NIO的读写操作都是经过缓冲区的;

(2)通道Channel--不同于Stream,流是单向的而通道既可以单向也可以双向(读写同时进行);

(3)多路复用器Selector--可以轮询出其上的已准备就绪的Channel,然后进行读写操作,并且没有最大连接数的限制

  • AIO通信模型(异步非阻塞)

特点:

(1)连接注册读写事件和回调函数

(2)读写方法异步

(3)主动通知程序

四种IO对比

IO通信

参考:https://blog.csdn.net/qq_24871519/article/details/82390657

参考:https://blog.csdn.net/qq_20788055/article/details/84994953

相关文章: