滴滴滴,您收到一条来自好友“旁白君”的消息:
旁白君:同步和异步,两种接口有啥区别?
我:同步:当前方法处理完才可继续后面方法,异步:不用等当前方法处理完,可继续执行下一个方法。
旁白君:不是很明白,可以举个例子吗?3Q
此时的我楞了下,一时还真不知道怎么回答,于是我抬头陷入了沉思,开始寻找和构思各种例子。(旁白君:好意思说,当时你的回答是:“这个网上很多自己去查一下”)
同步和异步
同步和异步通常用来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的方法。异步方法调用一旦开始,方法调用会立即返回,调用者就可以继续后续的方法。而真正的代码逻辑会在另外一个线程中执行,整个过程不会阻碍调用者的工作。
购物例子
下班了,辛苦的一天终于解放,去超市买瓶啤酒舒缓一天的压力,当你选好准备去买单,这时候看到这样的排队场景:
没办法,你只能排队等着,一个一个轮到你后买完单回家,一次愉快的购物就结束了,这就是同步调用。
第二天上班,当听到同事说网上购物之后,你也试着在网上购买了一瓶啤酒,当你完成网上支付时,整个购物过程对你来说就结束了,你继续一天的工作。就等着收到快递员给你的签收通知,这就是异步调用。
外卖例子
周末了,你突然想吃西餐,找到附近一家西餐厅,去到餐厅时发现太多比你们早去的了,都在排着队等着:
你也只能排队等着,轮到你了买了自己喜欢吃的回家,一个丰盛的晚餐就结束了,这就是同步调用。
你觉得这样太浪费时间,学会了网上订餐,上网购买了一个大牛排套餐,当你完成网上支付时,整个购物过程就结束了,你可以继续看韩剧、看书、玩游戏。就等着商家通知美食送上门了,这就是异步调用。
我:看了以上2个例子,应该明白了吧,其实这样的例子还有很多,例如:“买火车票、代购等”
旁白君:完全明白了,突然发现一个真理
我:啥?
旁白君:你看,好像互联网的发展趋势其实是:多线程!
我:呃呃呃...你还真能想象,不过好像是那么回事。