【426、BIO、NIO、AIO的区别是什么】

203 阅读1分钟

BIO、NIO、AIO 是三种不同的 I/O 模型,它们之间的区别如下:

  1. BIO(Blocking I/O)阻塞 I/O

BIO 是一种同步阻塞的 I/O 模型,指的是在进行 I/O 操作时,必须等待 I/O 完成后才能继续执行后续操作。在执行 Socket 读写操作时,如果当前没有数据可读或网络写入速度跟不上写出速度时,读写操作会一直阻塞在那里,直到有数据可读或者写入速度加快。

  1. NIO(Non-blocking I/O)非阻塞 I/O

NIO 是一种同步非阻塞的 I/O 模型,指的是在进行 I/O 操作时,不需要等待 I/O 完成,可以继续执行后续操作。在执行 Socket 读写操作时,如果当前没有数据可读或网络写入速度跟不上写出速度时,读写操作会立即返回,而不会一直阻塞在那里。

  1. AIO(Asynchronous I/O)异步 I/O

AIO 是一种异步非阻塞的 I/O 模型,指的是在进行 I/O 操作时,无需等待操作完成就可以继续执行后续操作。在执行 Socket 读写操作时,如果当前没有数据可读或网络写入速度跟不上写出速度时,读写操作会立即返回,并通过回调方式告知操作完成。

总体来说,BIO 适用于连接数较小且连接时间较长的场景,NIO 适用于连接数较多且连接时间较短的场景,而 AIO 适用于连接数较多且连接时间较长的场景。在高并发、大流量的场景下,NIO 和 AIO 的性能要优于 BIO。