当前位置:网站首页>如何理解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)
哪种方式更有效率呢?是不是一目了然呢?
边栏推荐
猜你喜欢

2022年固定资产管理系统的概况

08 【Props 组件事件】

mySQL add, delete, modify and check advanced

J9数字论:Web3.0+互联网电商会引起怎样的火花?

ARM Architecture 3: Addressing and Exception Handling of ARM Instructions

【微服务架构】为故障设计微服务架构

jq封装树形下拉选择框组件

郭晶晶家的象棋私教,好家伙是个机器人

Spotify expresses its architectural design using the C4 model

【数据仓库】什么是 Azure Synapse,它与 Azure Data Bricks 有何不同?
随机推荐
【API架构】使用 JSON API 的好处
关于镜像源的一些记录
[Metaverse Omi Says] Listen to how Rabbit Fan Rabbit creates a new era of trendy play from virtual to reality
BUUCTF【pwn】解题记录(4-6页持续更新中)
封装和使用通用的工具栏组件
【数据架构】分布式数据网格作为集中式数据单体的解决方案
DeepFake换脸诈骗怎么破?让他侧个身
BUUCTF problem solving PWN 】 【 record (4-6 pages continuously updated)
【FAQ】【Push Kit】推送服务,回执配置一直报错、回执过期修改、怎么删除配置的回执
keepalived:常见问题
DAY26:GetShell专题
Spotify使用C4模型表达其架构设计
CAD转WPF: 关于CAD图纸文件转换为WPF矢量代码文件(xaml文件)的技巧
UE4 Sequence添加基础动画效果 (04-在序列中使用粒子效果)
1499. The maximum pile.then/deque
UE4 Sequence添加基础动画效果 (05-蓝图触发Sequence)
Hugo NexT主题升级记录
2 模块一:科研思维培养
Optimistic and pessimistic locking
速卖通卖家如何抓住产品搜索权重