什么是同步,什么是阻塞
相信大家无论平时写何种语言的经常会听到同步阻塞,异步非阻塞这样的术语
同步与否和阻塞与否可以简单的理解为是两个不同的视角对于一次请求的描述
同步与否的关注点在得到一次请求返回结果的方式,如果是调用方主动得到结果即为同步,反之如果是由服务方返回结果则可认为是异步调用
阻塞与否的关注点在于在一次请求得到结果的过程中请求方的行为,如果请求方在得到结果之前一直在等待,则为阻塞请求;反之如果请求方在得到结果前没有傻傻等着,而是去做了其他事情,那么就是非阻塞请求
举个例子
下面举个生活中的例子来帮助大家更好的理解,相信通过这个例子大家就都能明白了
大家出去店里吃饭的时候,肯定会遇到过以下几种点餐场景
1.同步阻塞
下完单后一直傻傻的等着上菜
2.同步非阻塞
下完单后,没有傻傻的等着,而是去隔壁奶茶店再买个奶茶,至于菜有没有做好,全靠一张嘴,不停问服务员菜有没有好(往往这个时候,只要你问了,服务员一定会跟你说菜已经在锅里了)
3.异步阻塞
大家肯定去过一些甜品店,这类店家有个特点,在你点完单子后,会给你一个带提醒功能的餐牌。然后你就拿着餐牌傻傻等着,菜品准备好之后,这个餐牌就会响起来,提醒你去取餐
4.异步非阻塞
你下完单后,拿着餐牌去隔壁买个奶茶,回店里又继续玩了会手机,等餐牌提醒你之后,再去取餐