同步和异步通常形容一次方法调用。
同步:
同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。
异步:
异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另外一个线程中“真实”地执行。整个过程,不会阻碍调用者的工作。对于调用者来说,异步调用似乎是一瞬间就完成的。如果异步调用需要返回结果,那么当这个异步调用真实完成时,则会通知调用者。
抽象例子,并不绝对:
同步:购物时,如果你(一个线程)去商场实体买一台空调,当你到了商场看中了一款空调,你就想售货员(一个线程)下单。售货员去仓库帮你调配物品,你就在商店等待。直到商家把你和空调一起送回家,一次愉快的购物就结束了。
异步:网上购物,你(一个线程)在网上订购了一台空调。当你完成网上支付,对你而言购物过程就已经结束了。虽然空调还没有到家,但是你的任务都已经完成了。商家(一个线程)接到你的订单后,加紧安排送货,当然这一切已经与你无关了。你已经完成支付,想干什么就能去干什么,出去溜达几圈都可以。等送货上门的时候,接到商家电话,回家一趟签收就完事。