开足码力,码动人生,微信搜索【 程序员大帝 】,关注这个一言不合就开车的的代码界老司机
本文 GitHub上已经收录 https://github.com/BeKingCoding/JavaKing , 一线大厂面试核心知识点、我的联系方式和技术交流群,欢迎Star和完善

前言

很多刚刚接触多线程编程的同学,可能对串行、并行、并发等基础概念还傻傻分不清,今天就以用一个搬砖工程队,举例给你讲明白!码字不易,别忘了「在看」,「转发」哦。

正文

01 串行

串行( Sequential )简单来说就是一次只能做一件事情,而且还得按照顺序依次执行,后面的代码段必须等到前面代码段的任务执行完毕后才能执行。


假设我们目前经费有限,只有一名工人,工人没有三头六臂,因此他需要一件接着一件来完成任务,只有完成一件任务后才能去完成下一件任务。

此时完成总体装修工程,一共需要花费 2 + 1 + 3 = 6 天的时间

02 并行

并行( parallelism )指的是在同一时刻,任务可以同时开始进行,彼此之间没有依赖关系。整个周期的总耗时取决于耗时最长的那件事情所需的时间。

假设我们目前经费比较充足,雇佣了三名工人。装修工程的子任务之间没有依赖关系,因此工人们可以对墙体拆迁、安装水电线、粉刷铺地板这三件事情同时开工,每一名工人负责一件任务。

此时完成总体装修工程,总耗时取决于耗时最长的那件事情(在这里就是粉刷、铺地板)所需的时间,因此一共需要花费 3 天的时间

03 并发

并发( concurrency )是以交替的方式利用等待某件事情完成的时间来做其他事情。整个周期的总耗时:在一件任务等待时间内,节省这段等待时间来完成另一件任务。

假设我们目前经费不充足,只能雇佣了一名工人。仔细对粉刷、铺地板这件任务进行分析,发现它其实包含两部分,第一部分是进行粉刷墙壁、铺地板,第二部分是进行风干,分别花费 2 天和 1 天的时间。

粉刷、铺地板=粉刷墙壁、铺地板( 2 天)+ 风干( 1 天)

在等待房屋风干的时候,工人此时可以去完成其他的任务以节省时间。

在第三天的时候,从宏观角度来看,工人同时做了两件事情,但是微观的角度来看,工人没有三头六臂,其实他只在进行安装水电线的工作。

此时完成总体装修工程,一共需要花费 5 天的时间。

04 并行 VS 并发


根据CPU多路复用的原则,会将CPU的执行时间切分成很多细微的CPU时间片,一个CPU在同一时间只能完成一件任务。

对于单核CPU,当面对多个任务的时候,每个小时间片会执行一个操作,多个操作之间快速切换执行,造成了同时运行的假象。其实CPU在一个时间片内运行某一个线程时,其它线程处于挂起状态,这种方式我们称之为并发。

当系统有一个以上 CPU 时,则线程的操作可以并行开始。当一个 CPU 执行一个线程时,另一个 CPU 可以执行另一个线程,两个线程互不抢占 CPU 资源,他们同时进行,这种方式我们称之为并行。

并发的出现,比传统串行系统提高效率与时间,但带来了额外性能开销,如:系统调度和上下文切换。

多核CPU使并行成为可能,大大提高了处理能力。


Offer收割机》系列持续更新,也会定期分享互联网常用技术栈相关的文章,GitHub 上已经收录 https://github.com/BeKingCoding/JavaKing ,讲解一线大厂面试要求的核心知识点、并有对标阿里P7级别的成长体系脑图,欢迎加入技术交流群,我们一起有点东西。

我是一言不合就开车的代码界老司机无忌。创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

串行、并行、并发,别再傻傻分不清了!相关推荐

  1. 我要理解的CPU、核心,进程、线程,串行、并发、并行

    注意看修饰词. 1.计算机硬件基本组成 一个计算机(冯·诺依曼结构)[主要]硬件组成: 主板:是"交通枢纽",各个部件工作的所在平台,它负责将各个部件紧密连接在一起,各部件通过主板 ...

  2. 串行并行程序在效率上的简单比较

    串行&并行程序在效率上的简单比较 分类: Multi-X 2010-10-15 10:33 1198人阅读 评论(0) 收藏 举报 parallel工作程序开发作业语言测试 开头:     这 ...

  3. 基于串行并行ADMM算法的主从配电网分布式优化控制研究

    基于串行并行ADMM算法的主从配电网分布式优化控制研究 关键词:ADMM 串行并行算法 主动配电网 无功优化 分布式优化 参考文档:非复现,仅参考部分模型: 1)<主动配电网分布式无功优化控制方 ...

  4. 【转载】串行并行工序混合的生产线数学模型

    串行并行工序混合的生产线数学模型 串行并行工序混合的生产线数学模型 生产线简介 示意图 目标函数 求解结果 生产线简介 很多生产线工序并不是简单的串行或并行关系,而实两种同时存在的混合并发关系,本文主 ...

  5. 【51单片机】串行口连接74LS164进行串行/并行转换,输出到一个七段数码管。数码管循环显示0-9。采用串行通信方式0,定时间隔1秒。

    实验内容:51单片机的串行口连接74LS164进行串行/并行转换,然后输出到一个七段数码管.数码管循环显示0-9这10个数字.要求采用串行通信方式0,定时间隔1秒. 工具:proteus+keil # ...

  6. 入门系列:基础认知——串行、并发、并行

    说明:   本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉.   QQ 群 号:513683159 [相 ...

  7. 串行并行 同步异步通信

    终端与其他设备(例如其他终端.计算机和外部设备)通过数据传输进行通信.数据传输可以通过两种方式进行:并行通信和串行通信. 1.串行通信 是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个 ...

  8. CRC校验 串行 并行 长除 移位 查表 矩阵

    CRC校验的几种类型: 长除法,也叫直接计算法 移位寄存器,也叫线性移位 查表法 并行算法 一些有用的网页: CRC并行推导 https://blog.csdn.net/Old_Street/arti ...

  9. 计算机网络之物理层:1、接口特性、同步异步、串行并行、双工

    物理层:1.物理层相关概念 思维导图:(学习任务) 接口特性: 数据通信基础: 设计数据通信系统要考虑的三个问题: 三种通信方式: 串行.并行传输: 同步.异步传输: 思维导图:(学习任务) 接口特性 ...

  10. L9825_用于电阻和电感负载的八通道低侧驱动器,具有串行/并行输入控制、输出保护和诊断

    描述 L9825是一种八进制低压侧驱动电路,专用于汽车应用.当感应负载被驱动时,输出电压箝位用于反激电流再循环.芯片选择和串行外围接口,用于输出控制和诊断数据传输.两个输出的并联控制输入. 所有功能 ...

最新文章

  1. 硬核!两个博士结婚,接亲时新娘给新郎摆了盘棋局:你赢了再娶我!
  2. ISME Commun: 华中农业大学在菌群收敛机制方面取得新进展
  3. 在Navicat中直接向表里添加数据
  4. 如何查看Exchange2010中邮箱数据库的用户邮箱占用情况
  5. 利用反射做类参数的校验
  6. Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)
  7. 交换机的工作转发原理
  8. 函数指针 和 函数指针数组 和 函数指针数组
  9. JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
  10. mcgs组态软件中字体如果从左到右变化_MCGS脚本程序 (2)
  11. python程序中1—10的乘积_[求助]1个数1到10的乘积
  12. 佳佳mpg格式转换器免费版 v12.4.0.0
  13. 《重构》——第二次阅读笔记。golang视角
  14. 疯狂的二手电商:爱回收偷食闲鱼、转转
  15. oracle 11客户端精简版,oracle_11g精简版客户端配置
  16. 【Cesium入门】四、相机系统
  17. Excel如何批量为员工信息表添加照片
  18. B站 bilibili 视频、分区、up主数据合集
  19. ANSYS-材料的选择
  20. xilinx 权威设计指南_设计产品指标的权威指南

热门文章

  1. java hgetall_详解Java使用Pipeline对Redis批量读写(hmsethgetall)
  2. JPAQuery日期分组查询
  3. SQL Update的四种常见写法
  4. 微信公众平台帐号迁移条件及流程
  5. 《JAVA编程思想》学习笔记:第16章(数组)
  6. 象棋人机java代码,java象棋人机对战
  7. 威锋VL820是USB 3.1 2代集线器控制器
  8. C/C++ free(NULL)的思考
  9. 解决cannot resolve directory问题
  10. 数据优化 | CnOpenData国家基金项目数据