首页 > 其他 > 详细

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

时间:2019-03-31 20:22:19      阅读:137      评论:0      收藏:0      [点我收藏+]

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

一、概念

同步

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

异步

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

阻塞

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

非阻塞

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

二、两者区别

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

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

下面是我认为两篇写得比较清晰也比较简洁的博客。
https://www.cnblogs.com/pengsixiong/p/5556403.html
https://www.jianshu.com/p/9fa26b0b22a0

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

原文:https://www.cnblogs.com/heyyw1119/p/10632867.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!