编程语言
首页 > 编程语言> > Java有哪几种IO模型?有什么区别?

Java有哪几种IO模型?有什么区别?

作者:互联网

Java有哪几种IO模型?有什么区别?

要想彻底分清BIO、NIO、AIO,首先的明白同步、异步,阻塞、非阻塞的概念。

同步、异步【针对请求】和阻塞、非阻塞【针对客户端】:

在一个网络请求中,客户端(client)会发一个请求到服务端(server)。

1.客户端发了请求后,就一直等着服务端响应。客户端:阻塞;请求:同步;

2.客户端发了请求后,就去干别的事情了。时不时过来检查一下服务端是否给出了响应。客户端:非阻塞;请求:同步;

3.换成异步请求。客户端发了请求后,就坐在了椅子上,等着服务端返回响应。客户端:阻塞;请求:异步;

4.客户端发了请求后,就去干别的事情了。等到服务端给出响应后,再过来处理业务逻辑。客户端:非阻塞;请求:异步

BIO:同步阻塞IO

BIO:同步阻塞IO。可靠性差,吞吐量低,适用于连接比较少且比较固定的场景,JDK 1.4之前唯一的选择。
在这里插入图片描述

NIO:同步非阻塞IO

NIO:同步非阻塞IO。NIO解决了BIO需要线程过多,同时给服务器造成压力过大的问题。可靠性比较好,吞吐量也比较高,适用于连接比较多并且连接比较短的场景(轻操作),例如:聊天室;从JDK 1.4开始支持。这是目前使用最广的模型,Netty框架就是基于这个模型设计的。
在这里插入图片描述

AIO:异步非阻塞IO

AIO:异步非阻塞IO。AIO又解决了NIO模型服务端需要一直守着线程的这个问题。可靠性最好,吞吐量也是非常高的,适用于连接比较多,并且连接比较长的场景(重操作)。例如:相册服务器。从JDK 7版本开始支持。
在这里插入图片描述

标签:异步,同步,Java,请求,阻塞,哪几种,IO,客户端
来源: https://blog.csdn.net/weixin_45630735/article/details/116401039