同步与异步关注的是消息通信机制(synchronous/asynchronous communication)。
同步的思想是,发出一个调用(call)时,在没得到结果之前,该调用就不返回一直阻塞,程序需等待调用返回结果后才能继续执行后续工作。这种情况,可能出现用户等待时间太长,造成卡死的假象。
异步的思想是, 发出一个调用后,该调用立即返回,且没有返回结果。程序可以继续执行后续工作,而被调用者将通过状态、通知,或者回调函数来处理发出的调用。
例如,十一出行游玩,你打电话问旅店老板今晚有没有空房。如果是同步通信机制,老板会说,你稍等,我查一下。然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。而异步通信机制,老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后查好了,他会主动打电话给你。在这里老板通过“回电”这种方式来回调返回你的查询结果。