###同步与异步 同步和异步关注的消息同步机制。 ####同步 所谓同步,就是发出一个调用时,在没有得到结果之前,该调用就不会返回。但是一旦调用返回,就得到返回值。也就是说,调用者主动等待这个调用结果。 ####异步 所谓异步,就是调用在发出之后,这个调用就直接返回,所以没有返回结果。也就是说,当一个异步过程调用发出之后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用。
例子: 周末去餐厅吃饭,如果赶上饭点,以前的话,我们就得排队等待,这个过程中我们时不时地问是不是轮到我们,这是一件无聊而且浪费时间的事情。现在餐厅体谅我们的痛苦,让我们扫码关注餐厅的微信号公众号,实时更新当前就餐状态,这样我们就可以出去购物或者干自己喜欢的事情,只需要时不时的看一下手机,确认是不是轮到自己就餐。
在这个例子中我们排队等待主动询问是不是轮到我们就餐便是同步,我们通过微信号公众号得知我们就餐便是异步
###阻塞与非阻塞 阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。 ####阻塞 阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。 ####非阻塞 非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
接着上面的例子: 你关注了餐厅的微信号公众号后,你若果依旧在餐厅门口等候,而不去干别的,这个便是阻塞,若果你去购物或者干自己喜欢的事,只是时不时的看一下手机,确认是不是轮到自己,这便是非阻塞。
阻塞与非阻塞与是否同步异步无关,跟餐厅通过什么方式回答你结果无关。