同步异步阻塞非阻塞

同步和异步

  1. 同步,就是在发出一个调用时,在没有得到结果之前, 该调用就不返回。换句话说就是调用者主动接收这个结果。

  2. 异步,就是调用者发出一个调用后,不用等结果,直接可以进行下一步。也就是说这个调用没有返回结果,是被调用者通过状态、通知来通知调用者,或者通过回调函数处理这个调用。

通俗点说:
同步就像是正在苦苦追求一个女生的男生,这天他向这个女生表白,女生要给他一个是否同意交往的回答,女生没有回答之前他会一直等这个结果。
异步就像是个海王,广撒网,精准捕捞。群发表白消息,不管第一个女生是否给了回答,反正就是给列表里所有的女生都发了表白信息。等有女生同意和他交往,他就收到了想要的答案(返回值)。

阻塞非阻塞

阻塞和非阻塞关注得是程序在等待调用结果(消息,返回值)时的状态

  1. 阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
  2. 非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

还是上面那个例子,你向一个女生表白,然后她如果一直吊着你不给你答复(绿茶),你为了她茶饭不思,这就形成了阻塞。
如果你是海王,这个女生没有给你答复,你可以转过头去看看其他女生是否给你反馈,只要时不时回来看看这个女生有没有返回什么信息即可,这就是非阻塞。