当前位置: 移动技术网 > IT编程>开发语言>Java > 同步与异步、阻塞与非阻塞

同步与异步、阻塞与非阻塞

2019年04月01日  | 移动技术网IT编程  | 我要评论

最近在复习java io模型,其中对于同步与异步、阻塞与非阻塞概念的理解一直不够深入。在看了多篇前人总结的博客之后,对于这二者的区别终于有点领悟。

一、概念

同步

a调用b,b处理直到获得结果,才返回给a。需要调用者一直等待和确认调用结果是否返回,然后继续往下执行。

异步

a调用b,无需等待结果,b通过状态通知a或回调函数来处理。调用结果返回时,会以消息或回调的方式通知调用者。

阻塞

a调用b,a被挂起直到b返回结果给a,才能继续执行。
调用结果返回前,当前线程挂起不能够处理其他任务,一直等待调用结果返回。

非阻塞

a调用b,a不会被挂起,a可以执行其他操作。
调用结果返回前,当前线程不挂起,可以处理其他任务。

二、两者区别

同步异步是个操作方式,阻塞非阻塞是线程的一种状态。

同步异步指的是被调用者结果返回时通知线程的一种机制,阻塞非阻塞指的是调用结果返回进程前的状态,是挂起还是继续处理其他任务。

下面是我认为两篇写得比较清晰也比较简洁的博客。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网