同步异步
1.含义:
同步:
发起一个请求,必须等到回复才进行下一步操作。必须一件事一件事的做,等前一件做完了,才能做下一件事。需要调用者自己主动获取返回结果
异步:
当一个异步操作发出后,调用者在没有得到结果之前,可以继续执行后续操作。需要由被调用者告诉调用者返回结果
2.二者的区别:
请求发出后,是否需要等待请求结果,才能继续执行其他操作。
阻塞非阻塞
1.含义:
阻塞调用:
调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会被唤醒执行后续的操作。
非阻塞调用:
在不能立刻得到结果之前,该调用不会阻塞当前线程。
2.二者的区别:
该调用不会阻塞住当前线程
区别
1.同步异步表示一种协作方式,是从全局的角度来说明业务过程。阻塞和非阻塞强调的是程序在等待调用结果(消息,返回值)时的状态
2.阻塞/非阻塞:进程/线程需要操作的数据如果尚未就绪,是否妨碍了当前进程/线程的后续操作。
同步/异步:数据如果尚未就绪,是否需要等待数据结果。
3.阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
对于同步调用来说,很多时候当前线程还是激活的状态,只是从逻辑上当前函数没有返回而已,即同步等待时什么都不干,白白占用着资源
4.组合方式:
同步阻塞
同步非阻塞
异步阻塞
异步非阻塞
举例子
同步:
小明去窗口买票(同步),没有票之前一直等着票出来(阻塞)
异步:
小明去不窗口买票,而是让售票员有票后通知他(异步),期间去做任何其他事情(非阻塞)