当前位置:网站首页>如何理解BIO、NIO、AIO的区别
如何理解BIO、NIO、AIO的区别
2022-08-10 09:15:00 【黄泥川水猴子】
一、同步阻塞I/O(BIO):
同步阻塞I/O,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制来改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务端资源要求比较高,并发局限于应用中,在jdk1.4以前是唯一的io现在,但程序直观简单易理解
二、同步非阻塞I/O(NIO):
同步非阻塞I/O,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有IO请求时才启动一个线程进行处理。NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,jdk1,4开始支持
三、异步非阻塞I/O(AIO):
异步非阻塞I/O,服务器实现模式为一个有效请求一个线程,客户端的IO请求都是由操作系统先完成了再通知服务器用其启动线程进行处理。AIO方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,jdk1.7开始支持。
四、IO与NIO区别:
IO面向流,NIO面向缓冲区
IO的各种流是阻塞的,NIO是非阻塞模式
Java NIO的选择允许一个单独的线程来监视多个输入通道,可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入或选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道
五、同步与异步的区别:
同步:发送一个请求,等待返回,再发送下一个请求,同步可以避免出现死锁,脏读的发生
异步:发送一个请求,不等待返回,随时可以再发送下一个请求,可以提高效率,保证并发
同步异步关注点在于消息通信机制,
阻塞与非阻塞关注的是程序在等待调用结果时(消息、返回值)的状态:
阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程
AIO与NIO的实际区别是什么
例子讲解
海底捞很好吃,但是经常要排队。我们就以生活中的这个例子进行讲解。
- A顾客去吃海底捞,就这样干坐着等了一小时,然后才开始吃火锅。(BIO)
- B顾客去吃海底捞,他一看要等挺久,于是去逛商场,每次逛一会就跑回来看有没有排到他。于是他最后既购了物,又吃上海底捞了。(NIO)
- C顾客去吃海底捞,由于他是高级会员,所以店长说,你去商场随便玩吧,等下有位置,我立马打电话给你。于是C顾客不用干坐着等,也不用每过一会儿就跑回来看有没有等到,最后也吃上了海底捞(AIO)
哪种方式更有效率呢?是不是一目了然呢?
边栏推荐
- ARM Architecture 3: Addressing and Exception Handling of ARM Instructions
- CTFSHOW七夕杯web
- Pieces of TensorFlow 2.9 (1)
- [OAuth2] 20. OAuth2 Extended Protocol PKCE
- keepalived:双主配置
- Different command line styles
- 【微信小程序】一文读懂页面导航
- 00后女孩月薪3200,3年买两套房,这个程序员变现新风口千万要把握住
- 09 【Attributes继承 provide与inject】
- 13 【script setup 总结】
猜你喜欢
FPGA中BEL Site Tile FSR SLR分别指什么?
Flink部署 完整使用 (第三章)
UE4 Sequence添加基础动画效果 (04-在序列中使用粒子效果)
PTA 习题2.2 数组循环左移
DeepFake换脸诈骗怎么破?让他侧个身
浅谈DAO+DeFi+NFT模式开发代码技术方案丨链游元宇宙NFT盲盒项目技术开发逻辑(源码程序)
A File Online Query Display and Download Function Realized by Delphi
[Metaverse Omi Says] See how UCOUCO integrates performance art into the Metaverse
mySQL add, delete, modify and check advanced
UE4 Sequence添加基础动画效果 (05-蓝图触发Sequence)
随机推荐
Defending risks with technology and escorting cloud native | Tongchuang Yongyi X Boyun held a joint product launch conference
shell------ commonly used gadgets, sort, uniq, tr, cut
A File Online Query Display and Download Function Realized by Delphi
Nvidia's gaming graphics card revenue plummets / Google data center explosion injures 3 people / iPhone battery percentage returns... More news today is here...
【API Management】What is API Management and why is it important?
Different command line styles
How to break the DeepFake face-changing scam?turn him over
mySQL add, delete, modify and check advanced
推荐几个高质量的软件测试实战项目
不想再干会计了,蝶变向新,勇往直前,最后成功通过转行测试实现月薪翻倍~
FPGA时钟篇(二) 7系列clock region详解
【API 管理】什么是 API 管理,为什么它很重要?
FPGA时钟篇(三) MRCC和SRCC的区别
亚信AntDB数据库有啥业务应用场景和应用案例?
07 【动态组件 组件注册】
用高质量图像标注数据加速AI商业化落地
初识Flink 完整使用 (第一章)
FPGA中BEL Site Tile FSR SLR分别指什么?
【一起学Rust | 进阶篇 | RMQTT库】RMQTT消息服务器——安装与集群配置
qrcode-----生成二维码