同步(Synchronous)和异步(Asynchronous)的理解和区别讲解-程序员宅基地

技术标签: java  # JAVA 高级  

同步(Synchronous)和异步(Asynchronous)

我后面自己做了详细的2次整理
基础
完整版
有兴趣的同学自行查看;都附有代码demo 方便大家理解

同步和异步是什么?怎么理解下呢?

同步 :你去商城买东西,你看上了一款手机,能和店家说你一个这款手机,他就去仓库拿货,你得在店里等着,不能离开,这叫做同步。

同步“ 就好比:你去外地上学(人生地不熟),突然生活费不够了;此时你决定打电话回家,通知家里转生活费过来,可是当你拨出电话时,对方一直处于待接听状态(即:打不通,联系不上),为了拿到生活费,你就不停的 oncall 、等待,最终可能不能及时要到生活费,导致你今天要做的事都没有完成,而白白花掉了时间。

同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。

异步 :现在你买手机赶时髦直接去京东下单,下单完成后你就可用做其他时间(追剧、打王者、lol)等货到了去签收就ok了.这就叫异步。

“异步” 就是:在你打完电话发现没人接听时,猜想:对方可能在忙,暂时无法接听电话,所以你发了一条短信(或者语音留言,亦或是其他的方式)通知对方后便忙其他要紧的事了;这时你就不需要持续不断的拨打电话,还可以做其他事情;待一定时间后,对方看到你的留言便回复响应你,当然对方可能转钱也可能不转钱。但是整个一天下来,你还做了很多事情。 或者说你找室友临时借了一笔钱,又开始 happy 的上学时光了。

异步方法调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而,异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作

简而言之,言而总之: 同步就是我强依赖你(对方),我必须等到你的回复,才能做出下一步响应。即我的操作(行程)是顺序执行的,中间少了哪一步都不可以,或者说中间哪一步出错都不可以,类似于编程中程序被解释器顺序执行一样;同时如果我没有收到你的回复,我就一直处于等待、也就是阻塞的状态。 异步则相反,我并不强依赖你,我对你响应的时间也不敏感,无论你返回还是不返回,我都能继续运行;你响应并返回了,我就继续做之前的事情,你没有响应,我就做其他的事情。也就是说我不存在等待对方的概念,我就是非阻塞的。

同步执行
在这里插入图片描述
同步执行当调用方法执行完成后并返回结果,才能执行后续代码

异步执行
在这里插入图片描述
异步调用的话可用参考ajax,调用方法后不会等到sum方法执行完成,而是直接执行后续代码。sum方法执行完成后主要通过状态通知主线程,或者通过回调处理这次异步方法执行的结果

看了上面的讲解,你可能会说这不就是阻塞机制吗?不不不,同步异步不能和阻塞非阻塞混为一谈。

阻塞和非阻塞 强调的是程序在等待调用结果(消息,返回值)时的状态. 阻塞调用是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。 对于同步调用来说,很多时候当前线程还是激活的状态,只是从逻辑上当前函数没有返回而已,即同步等待时什么都不干,白白占用着资源。

同步和异步强调的是消息通信机制 (synchronous communication/ asynchronous communication)。所谓同步,就是在发出一个"调用"时,在没有得到结果之前,该“调用”就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由“调用者”主动等待这个“调用”的结果。而异步则是相反,"调用"在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果。而是在"调用"发出后,"被调用者"通过状态、通知来通知调用者,或通过回调函数处理这个调用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42055933/article/details/121223484

智能推荐

音箱一通电就嗡嗡响已修好_多媒体音箱常见故障和解决办法?学习下-程序员宅基地

文章浏览阅读3.5w次。对于大部分的用户来说,在多媒体音箱的使用上都不会有特别的讲究,很多用户由于对产品结构的陌生以及相关知识的缺乏,往往在音箱出现小故障之后也是凑合着用,实在不行再重新换过,事实上多媒体音箱的不少故障修理都非常简单,一般的用户都可以轻松搞定。一、调整音量时出现噼里啪啦的声音,音量时大时小。这是在多媒体音箱身上出现次数最多的故障,相信很多用户都有这样的体会,在使用一段时间后,调节音箱的音量往往会出现这个情..._音箱一通电就嗡嗡响怎么办

深度学习9-使用强化学习进行股票交易_强化学习做股票-程序员宅基地

文章浏览阅读1.8k次。强化学习_强化学习做股票

浅谈数据中心网络结构的发展历程-程序员宅基地

文章浏览阅读689次。传统数据中心的网络架构数据中心计算网络主要由大量的二层接入设备与少量的三层设备组成的网络结构,是传统上标准的三层结构:1、接入层,用于连接所有的计算节点,在目前的数据中心中,通常以机柜交换机的形式存在;2、汇聚层,用于接入层的互联,并作为该汇聚区域二三层的边界,同时各种防火墙、负载均衡等业务也部署于此;3、核心层,用于汇聚层的的互联,并实现整个数..._数据中心网络结构的发展历史

记一次使用git将本地项目上传到远程仓库GitHub-程序员宅基地

文章浏览阅读303次,点赞5次,收藏3次。或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!4)最后你到你的github上,去看你刚才新建的项目仓库,发现代码以及都上传上去啦!可任意通过git checkout -b other origin/other切换到其它分支。3)然后现在可以使用如下命令将代码push到远程仓库上啦!step0.对指定项目进行签名操作—指定你的用户名和邮箱。step1.对指定项目文件初始化本地仓库。step3.提交你本地的项目文件。

tp5 分页php不能foreach,tp5框架无刷新分页实现方法分析-程序员宅基地

文章浏览阅读65次。本文实例讲述了tp5框架无刷新分页实现方法。分享给大家供大家参考,具体如下:已tp5 分页为例,1.默认生成的分页 页码如下:«12»2.点击页码 值,跳转到对应的页面,并get传 page='1' or '2';所以无刷新需要做到两点,阻止页码 a链接跳转 和 传值【post 和 get都可以】,ajax传值到后端控制器时,接收并存入$page即可,一定要存入$page,不能是其他变量名(因为..._tp框架 $this->build不能foreach

定时任务之Springboot整合Quartz_spring与quartz整合-程序员宅基地

文章浏览阅读890次,点赞20次,收藏20次。Quartzquartz是一个定时调度的框架,指定时间内触发执行某个动作;它完全由 Java 写成,并设计用于 J2SE 和J2EE应用中。只需要继承QuartzJobBean,并重载executeInternal方法即可定义你自己的Job执行逻辑@[email protected]("Hello Job执行时间: " + new Date());_spring与quartz整合

随便推点

Science新闻:肠道菌群又添一大功能,揭示你的真实年龄_深度学习+肠道菌群+免疫组学-程序员宅基地

文章浏览阅读4.8k次。文章目录肠道菌群又添一大功能,揭示你的真实年龄写在前面热心肠日报摘要背景研究方法数据获取神经网络训练回归分类过采样特征重要性研究结果机器学习预测年龄微生物对年龄预测的影响结论Science新闻介绍Reference译者简介猜你喜欢写在后面肠道菌群又添一大功能,揭示你的真实年龄撰文:陈亮 中科院微生物所责编:刘永鑫写在前面日前从热心肠日报看到,Science杂志发了一则新闻:肠道里的细菌可..._深度学习+肠道菌群+免疫组学

大一python编程题库和答案,大一python题库及答案_有一个列表['python','programmer','internet','crawler'],-程序员宅基地

文章浏览阅读1k次,点赞20次,收藏16次。大家好,给大家分享一下大一python基础编程题答案,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!_有一个列表['python','programmer','internet','crawler'],编写程序统计该列

SAP物料标准成本估算结果_sap 委外物料标准成本核算-程序员宅基地

文章浏览阅读7.3k次,点赞6次,收藏7次。SAP物料标准成本估算(CK11N/CK40N)的结果保存在相关表格:KEKO,CKIS (CKIP,CKIT) ._sap 委外物料标准成本核算

sql拼接同一字段中的数据_用SQL将Oracle中同一列的多行记录拼接成一个字符串-程序员宅基地

文章浏览阅读442次。-- 原始数据-- a 111-- b 222-- a 333-- a 444-- b 555-- 最终结果-- a 111*333*444SELECTL4.L_TIME,MAX(SUBSTR(L4.分组内容,2)) 最终字段值FROM(SELECTL3.L_TIME,SYS_CONNECT_BY_PATH(L3.L_CONTENT,'*') AS 分组内容FROM(SEL..._sql同一列的做个值进行拼接

H71H-25P立式止回阀型号解析_止回阀h77f-25p的字母含义-程序员宅基地

文章浏览阅读68次。H71H-25P型号字母含义解析H71H-25P是德特森阀门常用的立式止回阀型号字母分别代表的意思是:H——代表阀门类型《止回阀》7——代表连接方式《对夹》1——代表结构形式《升降》H——代表阀座堆焊《不锈钢》-代表分隔键25——代表公称压力《2.5MPA》P——代表阀体材料《不锈钢CF8》_止回阀h77f-25p的字母含义

cmd move 文件到指定目录下 拒绝访问_cmd move 拒绝访问-程序员宅基地

文章浏览阅读6.9k次。移动文件时,提示C:\Users>move Twisted-19.2.1-cp38-cp38m-win_amd64.whl chenminzhen\appdata\local\programs\python\python37拒绝访问。移动了 0 个文件。解决办法:命令提示符——右键——以管理员身份运行,再输入move命令,问题解决!!!C:\WINDOWS\sys..._cmd move 拒绝访问