阻塞非阻塞说的是线程的状态

  1. 阻塞: 线程调用IO接口后,一直等待,不能做其它事
  2. 非阻塞:线程调用IO接口时,可以做其它事,不用一直等待

二. 同步/异步

同步和异步说的是消息的通知机制

  1. 同步:线程调用IO接口后,不停询问IO接口是否完成
  2. 异步:线程调用IO接口后,不用一直询问,由IO接口告知结果

三. 组合

  1. 同步阻塞: 调用IO接口后,线程一直等待并不停询问IO接口调用结果
  2. 同步非阻塞:调用IO接口后,线程可以做其它事,隔段时间询问IO接口调用结果
  3. 异步阻塞: 调用IO接口后,线程一直等待并等待IO接口返回结果
  4. 异步非阻塞:调用IO接口后,线程可以做其它事,由IO接口告知结果

回调或事件机制实现异步


四. 示例

以 小明点击下载按钮 为例


同步阻塞:如果小明点击下载按钮之后,就一直干瞪着进度条不做其他任何事情直到软件下载完成,这是同步阻塞;


异步阻塞:如果小明点击下载按钮之后,就一直干瞪着进度条不做其他任何事情直到软件下载完成,但是软件下载完成其实是会「叮」的一声通知的(但小明依然那样干等着),这是异步阻塞;


同步非阻塞:如果小明点击下载按钮之后,就去做其他事情了,不过他总需要时不时瞄一眼屏幕看软件是不是下载完成了,这是同步非阻塞;


异步非阻塞:如果小明点击下载按钮之后,就去做其他事情了,软件下载完之后「叮」的一声通知小明,小明再回来继续处理下载完的软件,这是异步非阻塞。


五. 参考资料

  1. https://zhuanlan.zhihu.com/p/22707398
  2. https://www.zhihu.com/question/27991975/answer/56432635

相关文章:

  • 2021-08-01
  • 2021-11-18
  • 2021-07-26
  • 2021-09-15
  • 2021-12-03
  • 2021-10-17
  • 2021-05-12
猜你喜欢
  • 2021-08-18
  • 2021-10-28
  • 2021-08-13
  • 2022-01-10
  • 2022-01-31
  • 2022-12-23
相关资源
相似解决方案