同步VS异步

1.同步和异步 :通常形容一次方法调用。

2.区别:

  • 同步:(强制依赖对方)同步方法调用就是方法调用一旦开始,调用者必须得到回复,才能进行下一步响应。也就是说,同步的操作是顺序执行,中间少了哪一步都不可以,或者哪一步出错也不可以。同时,如果一直没有等到回复,则一直处于阻塞状态。
  • 异步:(不强制依赖)异步调用一旦开始,无论你返不返回,我都继续执行。如果你响应并返回了,我就继续做之前的事;如果你没有返回,我就继续做其他的事情。也就是,不存在等待对方的概念。

3.深入分析:

同步一定存在阻塞状态,但是,同步调用 不等于 阻塞调用。阻塞和非阻塞强调的是程序在等待调用结果时的状态。阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。对于同步调用来说,很多时候当前线程还是激活的状态,只是从逻辑上当前函数没有返回而已,即同步等待时什么都不干,白白占用着资源。所谓同步,就是在发出一个"调用"时,在没有得到结果之前,该“调用”就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由“调用者”主动等待这个“调用”的结果。而异步则是相反,"调用"在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在"调用"发出后,"被调用者"通过状态、通知来通知调用者,或通过回调函数处理这个调用。

--------------------- 
作者:o0非诚勿扰0o 
来源:CSDN 
原文:https://blog.csdn.net/huangqiang1363/article/details/79508852 
版权声明:本文为博主原创文章,转载请附上博文链接!

4.

5.举个栗子:

”同步“就好比:你去外地上学(人生地不熟),突然生活费不够了;此时你决定打电话回家,通知家里转生活费过来,可是当你拨出电话时,对方一直处于待接听状态(即:打不通,联系不上),为了拿到生活费,你就不停的oncall、等待,最终可能不能及时要到生活费,导致你今天要做的事都没有完成,而白白花掉了时间。
“异步”就是:在你打完电话发现没人接听时,猜想:对方可能在忙,暂时无法接听电话,所以你发了一条短信(或者语音留言,亦或是其他的方式)通知对方后便忙其他要紧的事了;这时你就不需要持续不断的拨打电话,还可以做其他事情;待一定时间后,对方看到你的留言便回复响应你,当然对方可能转钱也可能不转钱。但是整个一天下来,你还做了很多事情。 或者说你找室友临时借了一笔钱,又开始happy的上学时光了。
--------------------- 
作者:o0非诚勿扰0o 
来源:CSDN 
原文:https://blog.csdn.net/huangqiang1363/article/details/79508852 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值