写在前面

本文隶属于专栏《100个问题搞定Java并发》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见100个问题搞定Java并发

解答

同步和异步通常用来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。
异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。
而异步方法通常会在另外一个线程中"真实"地执行。整个过程,不会阻碍调用者的工作。对于调用者来说,异步调用似乎是一瞬间就完成的。
如果异步调用需要返回结果,那么当这个异步调用真实完成时,则会通知调用者。

补充

打个比方,比如购物,如果你去商场买空调,当你到了商场看中了一款空调,你就向售货员下单。售货员去仓库帮你调配物品。
这天你热得实在不行了,就催着商家赶紧给你送货,于是你就在商店里候着他们,直到商家把你和空调一起送回家,一次愉快的购物就结束了。这就是同步调用。
不过,如果我们赶时,就坐在家里打开电脑,在网上订购了一台空调。当你完成网上支付的时候,对你来说购物过程已经结束了。
虽然空调还没送到家,但是你的任务已经完成了。商家接到了你的订单后,就会加紧安排送货,当然这一切己经跟你无关了。
你己经支付完成,想干什么就能去干什么,出去溜几圈都不成问题,等送货上门的时候,接到商家的电话,回家一趟签收就完事了。这就是异步调用。

Q.E.D.


Apache Spark Contributor