同步、异步

1 篇文章 0 订阅
1 篇文章 0 订阅

同步就是在发出一个调用时,在没有得到结果之前,该调用就不返回,但是一旦调用返回,就得到返回值了。调用时调用者主动等待这个结果。

异步就是调用在发出后,调用者就走了,不会等在那里什么事情也不做,但是调用者也不会立刻得到结果。当被调用者完成任务后,会通过状态,通知来通知调用者,或者通过回调函数来处理这个调用。

如,你打电话问问题,对方说,我思考一下

你电话不挂,什么都不做,在那里等着,就是同步。

电话挂了,等到他想到再打给你,就是异步。

 

这种同步异步的区分常常用在需要长时间等待的场景,如果执行一个耗时操作,你要等这个操作结束再做其他事,就是同步。你不等这个操作结束就去做其他事,等到有操作结果,再通过被调用者发送消息或者通过回调函数传递信息告诉调用者,就是异步。

 

一般情况下,项目中会选择异步通信的方式,因为选择同步通信,整个进程都会等待一个耗时操作的处理,有可能就会出现ANR现象。但是对于一些对先后顺序有要求的操作,比如加锁解锁等操作,读取信息的前提是必须要得到资源的锁,所以在得到锁这个操作完成之前,是不能往下继续执行的。

 

同步跟阻塞很像,但是同步的时候进程还在运行,CPU还在运行,阻塞的时候是申请一个资源申请不到或者现在在进行IO操作,所以是处于一个等待状态,没有在CPU上运行。而且同步的时候线程有可能阻塞有可能不阻塞。异步的时候线程也是可能阻塞可能不阻塞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值