同步,异步,阻塞,非阻塞是日常开发中经常聊的,但是真正说起来什么是这些东西的时候,还是有点绕. so 找找资料记录下.
重要
- 阻塞和非阻塞描述的是调用方。
- 同步与异步描述的是被调用方
以高科技钓鱼, 鱼咬钩之后会报警为例。
A调用B
阻塞
抛竿之后,就一直看着鱼竿等着鱼咬钩
A调用B,A一直等着B返回,在这期间A啥也不干
非阻塞
抛竿之后,开始玩手机,不需要一直看鱼竿
A调用B, A不用等着B,可以先忙着其他。
同步
鱼咬钩,告警器才亮
A调用B, B结束了之后才给A返回
异步
鱼竿抛出之后,鱼没有咬钩,但是告警器可以闪烁
A调用B, B先给A返回我收到了,等B结束之后再通过其他方式通知A(回调)