同步、异步、阻塞、非阻塞的理解

同步、异步、阻塞、非阻塞的理解

  有关这四个概念总会混淆,前几天特意查了下,简单理解了下这四个概念,若理解的不对,希望大家指正。

一、同步异步

  同步是调用者发出请求后,一直等待被调用者响应 ,如果被调用者没有响应那会一直不返回。以买书为例,如下:
这里写图片描述
  异步是调用者发出请求后,接着返回,当然这次返回是没有返回值的,只有当被调用者完成当前业务逻辑,会主动去通知调用者。具体如下:
这里写图片描述

二、阻塞非阻塞

  阻塞是线程在发出请求,在得到消息之前,会一直挂起,只有得到结果之后,才会返回。
这里写图片描述
  非阻塞是线程在发出请求,当前线程不会挂起,而是返回去接着做别的事情,但是自己会主动回来check 下被调用者对请求的处理情况。
这里写图片描述

三、同步异步阻塞非阻塞的区别

1、关注点不同
  同步异步关注的是整个访问过程中的消息通信体制。
  阻塞非阻塞关注的是线程在等待调用结果时,自己的状态。
2、范围不同
  同步异步 是更广的层次上,对整个访问过程,处理情况的描述。
  阻塞非阻塞 仅是单方面(线程)上的,在访问过程中,对自己所处状态的一种描述。(是否等待?)

关于更详细的内容可以参考这篇文章:同步异步阻塞非阻塞的理解

猜你喜欢

转载自blog.csdn.net/wohaqiyi/article/details/80646985