一. 同步/异步
- 同步和异步一般是两个有关联(或调用)关系的任务块(或方法块)之间通讯交互和执行时序的一种描述。
- 同步:
1)被调用模块在执行完其全部逻辑后才返回;
2)调用模块需等待被调用模块执行完其代码逻辑后,再继续执行其逻辑;
3)两任务模块在一次调用期间不会出现时间重叠; - 异步:
1)被调用模块在返回结果后,仍需一定时间才能完成其逻辑;
2)调用模块需等待被调用模块执行完其代码逻辑后,再继续执行其逻辑;
3)两任务模块在一次调用期间可能会出现时间重叠;
二. 阻塞/非阻塞
- 阻塞/非阻塞指是否阻塞当前线程, 阻塞的是线程;
- 是描述某个程序执行需要依赖某个前置条件,此时若条件不满足时:
1)如果选择等待就是阻塞;
2)如果不等待直接返回就是非阻塞; - 例子:
1)BIO等待数据到达;
2)等待释放锁;