在Java中提供了三种IO模型:BIO、NIO、AIO,模型的选择决定了程序通信的性能。
1.1、使用场景
- BIO
BIO适用于连接数比较小的应用,这种IO模型对服务器资源要求比较高。 - NIO
NIO适用于连接数目多、连接时间短的应用,比如聊天、弹幕、服务器间通讯等应用。 - AIO
AIO适用于连接数目多、连接时间长的应用,比如相册服务器。
1.2、BIO
同步并阻塞模型,服务器会为每一个连接建立一个线程,如果连接过多,且线程不做任何事情,会极大的浪费资源,示意图如下:

1.2.1、机制

流程:
- 服务器端启动ServerSocket。
- 客户端启动Socket对服务器进行通信,服务器会为每个客户端建立一个线程与之通信。
- 客户端发送请求,先咨询服务器是否有线程响应,如果没有则会等待,或者被拒绝。
- 如果有响应,客户端线程会等待请求结束后,再继续执行。

本文探讨了Java中的BIO、NIO和AIO三种IO模型,适合的应用场景及各自的工作原理。BIO适合小连接数,NIO适用于连接密集且时间短的应用,AIO则适用于连接数多且时间长的场景,如相册服务器。通过实例和流程图揭示了它们在资源利用上的差异。
https://www.bilibili.com/video/BV1qL411u7eE?spm_id_from=333.999.0.0
233

被折叠的 条评论
为什么被折叠?



