I/O模型

Java 共支持3种网络编程模型/IO模式: BIO,NIO,AIO

Java BIO

同步并阻塞(传统阻塞型)

服务器实现模式为一个连接一个线程,也就是客户端有连接请求的时候,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。

image.png

如果客户端很多,那么服务器就要启很多线程,每个线程都要占用一定的内存,所以服务器肯定是承受不了的

  • 程序发出一个 I/O 请求(例如从网络或文件中读取数据);

  • 线程被阻塞,直到数据读取完成;

  • 线程才继续往下执行。

Java NIO

同步非阻塞

image.png

image.png

image.png

Java AIO

异步非阻塞

image.png

BIO/NIO使用场景

image.png