欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

AIO+BIO+NIO+同步+异步+阻塞+非阻塞

发布时间:2023/12/31 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 AIO+BIO+NIO+同步+异步+阻塞+非阻塞 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一句话:

AIO是NIO的升级版,NIO是BIO的升级版[1]

所以其实是用AIO

IO名称JDK版本数据类型IO类型
IO  
BIO(偶尔也叫做OIO)<1.4 同步阻塞IO
NIO1.4缓冲同步非阻塞IO
AIO(NIO2.0)[7]1.7 异步非阻塞IO

 

 

对比[3]如下:

 

然后来说说同步、异步、阻塞非阻塞:

概念流程图备注
同步阻塞IO针对Sender而言,请求发送出去以后,一直等到Receiver有结果了才返回,这是同步。在Sender获取结果的期间一直被block住了,也就是在此期间Sender不能处理其它事情,这是阻塞。
异步阻塞IO针对Sender而言,请求发送出去以后,立刻返回,然后再等待Receiver的callback,最后再次请求获取response,这整个过程是异步。在Sender等待Receiver的callback期间一直被block住了,也就是在此期间Sender不能处理其它事情,这是阻塞。
同步非阻塞IO针对Sender而言,请求发送出去以后,立刻返回,然后再不停的发送请求,直到Receiver处理好结果后,最后一次发请求给Receiver才获得response。Sender一直在主动轮询,每一个请求都是同步的,整个过程也是同步的。在Sender等待Receiver的response期间一直是可以处理其它事情的(比如:可以发送请求询问结果),这是非阻塞。
异步非阻塞IO针对Sender而言,请求发送出去以后,立刻返回,然后再等待Receiver的callback,最后再次请求获取response,这整个过程是异步。在Sender等待Receiver的callback期间一直是可以处理其它事情的,这是非阻塞。

 

记忆的时候,上面的四种情况重点记忆“阻塞和非阻塞”极客

上面四种情况可以知道性能上的最佳方式是:异步阻塞IO和异步非阻塞IO

 

两种I/O多路复用模式

模式原理应用场景举例
reactorLinux epoll同步IOcallback
proactorWindows IO completion port异步IOfuture/await

 

基本 Linux I/O 模型的简单矩阵[6]:

 

Reference:

[1]Java核心(五)深入理解BIO、NIO、AIO

[2]简述JAVA同步、异步、阻塞和非阻塞之间的区别

[3]Java AIO 基本介绍

[4]如何深刻理解Reactor和Proactor?

[5]java-IO-多路复用机制

[6]Java新一代网络编程模型AIO原理及Linux系统AIO介绍

[7]浅析Java 中的流--BIO、NIO、AIO及NIO中的三大组件Buffer,Channel,Selector

创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

总结

以上是生活随笔为你收集整理的AIO+BIO+NIO+同步+异步+阻塞+非阻塞的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。