当前位置:网站首页>一分钟了解同步、异步、阻塞和非阻塞的区别
一分钟了解同步、异步、阻塞和非阻塞的区别
2022-06-26 00:15:00 【慕容田雨】
今天跟旭哥聊到的并发的机制,深入了解到了同步异步阻塞非阻塞的区别,自己总结一下,加强理解,废话不多说,就是干。
提出问题
同步和异步的区别是什么?
阻塞和非阻塞的区别是什么?
你可以尝试在脑子里想一下这个问题,先有自己的答案,然后再往下看
。
。
。
。
。
。
来看一下答案
同步和异步的关注点的是值的返回方式,
同步是服务方处理完后再响应用户。
而异步是服务方当前就先返回一个收到请求的值,然后真正处理完再返回结果,或者调用方再请求拉取结果。
阻塞和非阻塞的关注点是调用方的状态
阻塞是在服务方处理时,调用方的状态是什么都不干。
而非阻塞是在服务方处理时,调用方去干自己的事情,不在这干等着,调用方自己去查询结果,或者有结果时服务方通知调用方。
优缺点
阻塞
优点:能及时返回数据,没有延迟。
缺点,需要付出等待的时间代价。
非阻塞
优点:与阻塞比较,非阻塞不需要等待任务结果, 可以去执行其他任务,所以对并发的支持比较好。
缺点:不能及时的获取返回结果。因为每隔一段时间才回去询问,但是可能在两次询问动作的时间间隔内任务就可能完成了,这回导致整体数据的吞吐量的降低。
组合后的场景
我们来通过例子看下组合后的场景
同步阻塞
就是小明去无名缘吃米线,点了一个肉沫米线,服务员说大概半个小时可以做好,你得等一会。然后小明什么都不干就在这等着,等做好了再去干找座位。
BIO就是同步阻塞模式,我们的写的大部分方法都是同步阻塞的。
同步非阻塞
还是这个例子,
就是在师傅在坐米线同时,小明也没闲着,他去了个座位,他刷了会手机,但是每过10分钟,他都去看一下饭做好了没。
NIO就是同步非阻塞模式,
异步非阻塞
继续
小明点完米线,服务员给了小明一个号,说米线好了我喊你,然后小明就去找座位记单词了。
AIO是异步非阻塞模式,Callable和一些带有回调方法的都是异步非阻塞模式。
异步阻塞
这种方式很傻,一般没人会去用
边栏推荐
猜你喜欢

元气少女王钰洁 受邀担任第六季完美童模全球总决赛代言人

Sweet cool girl jinshuyi was invited to be the spokesperson for the global finals of the sixth season perfect children's model

Pre ++, post ++ and pre -- and post -- (+a, a++ and --a, a--)

Pixel6 unlock bootloader

Postman断言对应脚本的解释

Pointnet/Pointnet++学习

热血男孩滕文泽 受邀担任第六季完美童模全球总决赛形象大使

readv & writev

cyclegan:unpaired image-to-image translation using cycle-consistent adversarial network

Postman接口测试之断言
随机推荐
GUN make (2) 总述
判定积分给业务带来价值的两个指标
前置++,后置++与前置--与后置--(++a,a++与--a,a--)
CyCa children's physical etiquette Yueqing City training results assessment successfully concluded
Viwi interface
Finding the sum of N multiplications
27. template match
regular expression
Easy to understand C language keyword static
Redis7.0的安装步骤
Data arrangement of machinetranslation
readv & writev
Sweet girl lisixia was invited to be the little host of the global finals of the sixth season perfect child model
recvmsg & sendmsg
Postman接口测试之断言
JQ 自定义属性取值
cyclegan:unpaired image-to-image translation using cycle-consistent adversarial network
Common deep learning optimizers
PTA class a simulation bomb 10: 1119-1123
JQ获取对象的几种方式