同步、异步、阻塞、非阻塞的理解
有关这四个概念总会混淆,前几天特意查了下,简单理解了下这四个概念,若理解的不对,希望大家指正。
一、同步异步
同步是调用者发出请求后,一直等待被调用者响应 ,如果被调用者没有响应那会一直不返回。以买书为例,如下:
异步是调用者发出请求后,接着返回,当然这次返回是没有返回值的,只有当被调用者完成当前业务逻辑,会主动去通知调用者。具体如下:
二、阻塞非阻塞
阻塞是线程在发出请求,在得到消息之前,会一直挂起,只有得到结果之后,才会返回。
非阻塞是线程在发出请求,当前线程不会挂起,而是返回去接着做别的事情,但是自己会主动回来check
下被调用者对请求的处理情况。
三、同步异步
与 阻塞非阻塞
的区别
1、关注点不同
同步异步
关注的是整个访问过程中的消息通信体制。
阻塞非阻塞
关注的是线程在等待调用结果时,自己的状态。
2、范围不同
同步异步
是更广的层次上,对整个访问过程,处理情况的描述。
阻塞非阻塞
仅是单方面(线程)上的,在访问过程中,对自己所处状态的一种描述。(是否等待?)
关于更详细的内容可以参考这篇文章:同步异步阻塞非阻塞的理解