最近去面试,面试让我描述JAVA IO的三种方式:阻塞,非阻塞,异步。当时我有点儿懵了,异步怎么和阻塞,非阻塞并列了。阻塞和非阻塞是一组相对的概念,异步是和同步相对的概念。
同步
所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用。
异步
异步的概念和同步相对。当一个异步过程调用发出后,调用者不用等待得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
阻塞
非阻塞
非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
同步/异步是下, API 通知被调用者的通知方式。阻塞/非阻塞则是 API 调用者的等待方式。
在不同的场景下,同步/异步、阻塞/非阻塞的四种组合都有应用。
同步阻塞
同步阻塞是最简单的方式,常见的调用一个函数并等待其返回。
同步非阻塞
同步非阻塞就是 发出调用请求后,每隔一段时间查询一下执行进度的 的轮询(polling)方式。
1236



被折叠的 条评论
为什么被折叠?



