对同步/异步的理解

同步/异步执行可以用在的地方为 该部分任务的完成主体和该线程的完成主体不一样 ,什么意思呢,我举两个经常用异步的例子:

  1. 读取文件:读取文件的实质是将在硬盘上的数据复制到内存里,而这一操作的执行者并不是cpu,而是磁盘控制器。
  2. 发送http请求:当线程执行发送请求之后,就是网络里的传输问题了,并不需要cpu的操作。

所以存在异步/同步调用的地方,本身该任务的完成就不是该线程来做的
所谓的同步,不过就是 不做事在这里等该任务处理完成

更形象点的说法:

假设cpu是一个人,I/O控制器也是一个人,所谓的线程的调度等同于一个人处理多个任务,而异步/同步调用是一个人(cpu)命令另一个人(I/O控制器)去做一件事。

  • 在异步的情况下:我(cpu)并不等那个人(I/O控制器)完成任务才处理后面的事情,而是一分配完任务就干自己的其他事情了;
  • 在同步的情况下:我(cpu)就在这里等到那个人(I/O控制器)处理完我分配的任务,然后才干后面的事情。

来自我的知乎回答