一句话概括
区分点:
调用方是否等返回,等返回时候是什么状态?【如果等,等的时候在干什么?】
我调用你,我需不需要你立即返回,需要就是同步,不需要就是异步;
那如果我等你返回的时候,我在干啥?我挂起就是阻塞,不挂起就是非阻塞
解析:
同步和异步关注的是通信机制。
同步是实时处理,比如打电话,通信双方需要不断交互,才能传递信息。
同步操作是在发出一个调用时,如果没有得到结果之前,该调用就不返回。一旦调用返回,就得到返回值。因此,同步操作是由调用者主动等待这个调用的结果。
异步则是分时处理,如收发短信。异步操作在发出之后会直接返回,没有返回结果。异步操作可以避免拥塞,提高程序的效率和性能。
阻塞和非阻塞关注的是程序在等待调用结果时的状态。阻塞操作是指调用结果返回之前,当前线程会被挂起,只有得到结果之后才会返回。非阻塞操作则是指在该调用不能立刻得到结果之前,不会阻塞当前线程,可以继续处理后续的操作。