学习编程,同步异步是必须要理解学习的知识点,接下来让我们一起通过举例来理解同步和异步的区别,以及同步和异步的优缺点吧

同步和异步的区别

程序里面的同步和异步和我们现实生活理解不太一样,一般我们对同步的理解是同时做很多事情,但程序中的同步是按照任务的顺序执行任务,前一个任务没有执行结束,下一个任务不会执行,要等待上一个任务执行结束。

通俗举例:
我大学有个室友袁大炮,我们都叫他炮哥。大学开始时炮哥很单纯,和女生告白,在同一时间内只和一个女孩表白,
等人家姑娘拒绝他后才向另外一个女生表白,这就是我们所谓的同步,等上一个表白结束了才会和开始追求另外一个女生。

异步:是同一时间内可以做多件事,(这往往伴随着多线程,关于线程接下来我也会写一篇《javascript的单线程与异步》进行简单分析介绍)

通俗举例:
后来过来一段时间炮哥变风流了,他开始同时和多个女生表白,给一个姑娘表白不等姑娘回复就给另外一个姑娘表白,这就是我们所谓的异步。

当然,同步异步的含义不能这么表述,我们这样解释只是为了容易理解。

同步和异步的优缺点

我们炮哥前后不同的行为来分析一下同步与异步的优缺点:
1、当炮哥同一时间内只表白一个女生的时候,如果女生拒绝了他,中间可能要等等待姑娘很长的回复时间,脱单的效率会很低;
2、同时表白多个姑娘的话,他可以利用姑娘回复的这段时间表白其他姑娘, 这样炮哥脱单效率就会变得很高,但这样也会带来其他问题,比如要耗费大量的精力财力,并且有可能多个女生关系处理不好,不便控制,容易发生意外情况。

所以同步和异步主要的优缺点我们就总结出来了:

1、同步的执行效率会比较低,耗费时间,但有利于我们对流程进行控制,避免很多不可掌控的意外情况;
2、异步的执行效率高,节省时间,但是会占用更多的资源,也不利于我们对进程进行控制

附:
出处:https://blog.csdn.net/qq_21033663/article/details/51564786
在网上看到的一个比较详细的同步异步的比较,分享给大家,大家看比较重要的几点,我将用“*”标出重要的点:
异步的使用场景:

1、*不涉及共享资源,或对共享资源只读,即非互斥操作
2、*没有时序上的严格关系
3、不需要原子操作,或可以通过其他方式控制原子性
4、*常用于IO操作等耗时操作,因为比较影响客户体验和使用性能
5、*不影响主线程逻辑

同步的使用场景:

不使用异步的时候

同步的好处:

1、同步流程对结果处理通常更为简单,可以就近处理。
2、同步流程对结果的处理始终和前文保持在一个上下文内。
3、同步流程可以很容易捕获、处理异常。
4、同步流程是最天然的控制过程顺序执行的方式。

异步的好处:

1、异步流程可以立即给调用方返回初步的结果。
2、异步流程可以延迟给调用方最终的结果数据,在此期间可以做更多额外的工作,例如结果记录等等。
3、异步流程在执行的过程中,可以释放占用的线程等资源,避免阻塞,等到结果产生再重新获取线程处理。
4、异步流程可以等多次调用的结果出来后,再统一返回一次结果集合,提高响应效率。

结语

文章不足之处希望大家进行批评指正,共同进步!
本文原创,转载和使用请注明出处
交流联系QQ:1670765991

同步和异步的区别及优缺点相关推荐

  1. 同步和异步的区别及优缺点 通俗理解

    同步和异步的区别及优缺点 学习编程,同步异步是必须要理解学习的知识点,接下来让我们一起通过举例来理解同步和异步的区别,以及同步和异步的优缺点吧 同步和异步的区别 程序里面的同步和异步和我们现实生活理解 ...

  2. 同步和异步的区别和优缺点

    很长的一段时间都没有搞清楚同步和异步到底怎么区分,概念性的东西老是搞混,现将其进行一个系统性的梳理,供以后参考- 文章目录 同步 异步 两者比较 优缺点及使用场景 异步优点 异步使用场景 同步优点 同 ...

  3. Linux---阻塞与非阻塞、同步与异步的区别

    阻塞 为了完成某个功能,发起调用,如果当前不具备完成的条件,则会一直等待. 非阻塞 为了完成某个功能,发起调用,如果当前不具备完成功能的条件,则立即报错返回. 阻塞与非阻塞的区别 一个调用发起时,不具 ...

  4. 简述同步和异步的区别

    简述同步和异步的区别 同步: 同步的思想是:所有的操作都做完,才返回给用户.这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉 ...

  5. 线程中的同步和异步的区别

    线程中的同步和异步的区别 一.同步        所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作.是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率不 ...

  6. js同步和异步的区别

    js同步和异步的区别 同步任务 异步任务 同步和异步运行机制 首先,不同于其他后端语言,javascript语言是单线程机制.所谓单线程就是按次序执行,执行完一个任务再执行下一个.对于浏览器来说,也就 ...

  7. JS中同步和异步的区别

    JS中同步和异步的区别 js是一门单线程语言,所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推.如果一个任务耗 ...

  8. android同步异步的区别是什么,同步和异步的区别.md

    #同步和异步的区别 3.1 何为同步和异步 Android Telephony相关应用中,Telephony大量使用了Handler.Broadcast等通信方式,而在Android操作系统平台中的H ...

  9. 线程同步和异步的区别

    多线程和异步操作的异同 多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性.甚至有些时候我们就认为多线程和异步操作是等同的概念.但是,多线程和异步操作还是有一些区别的.而这些 ...

最新文章

  1. 新冠研究数据哪里找?科研工作者必看(附链接)
  2. 计算机主机外设接口,计算机是如何自动识别外设~~凯凯最终成果!
  3. 中国最大的python社区-python 最大堆
  4. 8.Verilog的for循环语句使用
  5. Redis之压缩链表ziplist
  6. 张家港职称计算机应用能力考试,2016年江苏张家港计算机应用能力考试零基础备考...
  7. JVM从入门到精通(三):热加载的实现原理,Java内存模型,缓存行,指令重排,合并写技术等
  8. 【转载】高效能,大数据量存储方案SqlBulkCopy
  9. GDAL C#版本 安全透明方法问题解决方案
  10. Codeforces Round #450
  11. ffmpeg 转换VC工具 V1.1.1
  12. 表达式计算引擎-JEP
  13. java方面的文献综述怎么写_java论文参考文献
  14. 应用程序虚拟化工具(VMware ThinApp)5.2.1汉化绿色企业版
  15. 思科模拟器实验7:OSPF配置命令
  16. cad小插件文字刷_CAD实用小插件,这是一串让你效率提升相见恨晚的代码!
  17. 一键seo提交收录_百度、360快速收录新上线网站技巧、方法
  18. 一文搞懂H264量化原理以及计算过程
  19. Simulink 环境基础知识(二十六)--信号基础知识
  20. Python open函数用法

热门文章

  1. oracle触发器语句
  2. ThreeJS 地球上撒点
  3. 梅科尔工作室-李柯增-鸿蒙笔记3
  4. YOLOv5源码逐行超详细注释与解读(7)——网络结构(2)common.py
  5. CSS多行省略的几种方法
  6. Centos7.x 安装git 2.x
  7. [HDU6757]Hunting Monsters
  8. vmware配置centos虚拟机的网络能够在同一个局域网中互相访问和连接外网
  9. sql语言和c语言比,SQL点滴10—使用with语句来写一个稍微复杂sql语句,附加和子查询的性能对比...
  10. 「CSP-S 2019」 Emiya 家今天的饭 题解