深入总结同步异步阻塞和非阻塞(仔细阅读你一定会茅塞顿开)

深入总结同步异步阻塞和非阻塞(仔细阅读你一定会茅塞顿开)

总论

同步异步:都是针对服务端操作而言
阻塞非阻塞:都是针对客户端状态而言
同步: 强调的是执行的有序性
异步:则是因为服务端的协作方式的改变而产生的一个快速响应的假象

同步:
对于在同一时间使用同一资源的多个用户而言,这多个用户必须一个一个有序访问资源。此时,每一个用户都存在一个最小单元的物理等待时间。

异步:
真正意义上的异步是不存在的,同步性只能被转移和拆分而无法消失。但所有的概念都是有参考系的。异步本质是对同步最小物理等待单元的进一步拆分。拆分的方式就是服务端的协作优化。

阻塞非阻塞强调的是状态
阻塞:
在得到返回值之前一直等
非阻塞:
在得到返回值之前干其他事情

举个例子

早上排队吃煎饼果子,煎饼果子老板一人(排队人是客户端,老板是服务端)

同步性:老板在同一时间只能给一个顾客做煎饼果子,其他人在此时此刻是不能再让老板做煎饼果子了。(一个做完做下一个,有序进行。)
阻塞状态: 其他人可以排队一直等

为了解决大家的排队问题(改变阻塞问题),老板招了一个副手(优化内部协作方式)
对于不想排队的顾客,他们可以直接找副手,做一个预定,然后做好了再去通知顾客。
副手的响应时间是远远小于老板的响应时间的,因为副手只需要告诉顾客现在能做还是不能做,然后顾客就立刻知道的现在的服务状态了,可以选择不排队了。这就是一种异步行为(本质是等待时间更小的同步行为,因为一个人再问副手的时候,其他人也要等待副手~ ,这就是同步性只能转移和拆分但是无法消失) 而对于顾客不排队去干其他事的状态叫做非阻塞状态

同步阻塞: 服务提供者的本身是具有有序性的,需要同步执行,但是服务调用者可以选择等待
同步非阻塞

异步就是异步 真正的异步就没有阻塞非阻塞这样的概念! 如果认为有异步存在,那就是将最小的等待时间定义在了同步的粒度上。那么一切都是非阻塞的。如果任务异步中还有阻塞的概念存在,那这个就不能叫做异步!!!

NIO: 异步复用,快速响应客户端请求,客户端请求非阻塞。select轮询查找符合条件的请求并建立连接,select的这个过程就是同步过程

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值