串行、并行、并发,别再傻傻分不清了!
开足码力,码动人生,微信搜索【 程序员大帝 】,关注这个一言不合就开车的的代码界老司机
本文 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级别的成长体系脑图,欢迎加入技术交流群,我们一起有点东西。
我是一言不合就开车的代码界老司机无忌。创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
串行、并行、并发,别再傻傻分不清了!相关推荐
- 我要理解的CPU、核心,进程、线程,串行、并发、并行
注意看修饰词. 1.计算机硬件基本组成 一个计算机(冯·诺依曼结构)[主要]硬件组成: 主板:是"交通枢纽",各个部件工作的所在平台,它负责将各个部件紧密连接在一起,各部件通过主板 ...
- 串行并行程序在效率上的简单比较
串行&并行程序在效率上的简单比较 分类: Multi-X 2010-10-15 10:33 1198人阅读 评论(0) 收藏 举报 parallel工作程序开发作业语言测试 开头: 这 ...
- 基于串行并行ADMM算法的主从配电网分布式优化控制研究
基于串行并行ADMM算法的主从配电网分布式优化控制研究 关键词:ADMM 串行并行算法 主动配电网 无功优化 分布式优化 参考文档:非复现,仅参考部分模型: 1)<主动配电网分布式无功优化控制方 ...
- 【转载】串行并行工序混合的生产线数学模型
串行并行工序混合的生产线数学模型 串行并行工序混合的生产线数学模型 生产线简介 示意图 目标函数 求解结果 生产线简介 很多生产线工序并不是简单的串行或并行关系,而实两种同时存在的混合并发关系,本文主 ...
- 【51单片机】串行口连接74LS164进行串行/并行转换,输出到一个七段数码管。数码管循环显示0-9。采用串行通信方式0,定时间隔1秒。
实验内容:51单片机的串行口连接74LS164进行串行/并行转换,然后输出到一个七段数码管.数码管循环显示0-9这10个数字.要求采用串行通信方式0,定时间隔1秒. 工具:proteus+keil # ...
- 入门系列:基础认知——串行、并发、并行
说明: 本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉. QQ 群 号:513683159 [相 ...
- 串行并行 同步异步通信
终端与其他设备(例如其他终端.计算机和外部设备)通过数据传输进行通信.数据传输可以通过两种方式进行:并行通信和串行通信. 1.串行通信 是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个 ...
- CRC校验 串行 并行 长除 移位 查表 矩阵
CRC校验的几种类型: 长除法,也叫直接计算法 移位寄存器,也叫线性移位 查表法 并行算法 一些有用的网页: CRC并行推导 https://blog.csdn.net/Old_Street/arti ...
- 计算机网络之物理层:1、接口特性、同步异步、串行并行、双工
物理层:1.物理层相关概念 思维导图:(学习任务) 接口特性: 数据通信基础: 设计数据通信系统要考虑的三个问题: 三种通信方式: 串行.并行传输: 同步.异步传输: 思维导图:(学习任务) 接口特性 ...
- L9825_用于电阻和电感负载的八通道低侧驱动器,具有串行/并行输入控制、输出保护和诊断
描述 L9825是一种八进制低压侧驱动电路,专用于汽车应用.当感应负载被驱动时,输出电压箝位用于反激电流再循环.芯片选择和串行外围接口,用于输出控制和诊断数据传输.两个输出的并联控制输入. 所有功能 ...
最新文章
- 硬核!两个博士结婚,接亲时新娘给新郎摆了盘棋局:你赢了再娶我!
- ISME Commun: 华中农业大学在菌群收敛机制方面取得新进展
- 在Navicat中直接向表里添加数据
- 如何查看Exchange2010中邮箱数据库的用户邮箱占用情况
- 利用反射做类参数的校验
- Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)
- 交换机的工作转发原理
- 函数指针 和 函数指针数组 和 函数指针数组
- JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
- mcgs组态软件中字体如果从左到右变化_MCGS脚本程序 (2)
- python程序中1—10的乘积_[求助]1个数1到10的乘积
- 佳佳mpg格式转换器免费版 v12.4.0.0
- 《重构》——第二次阅读笔记。golang视角
- 疯狂的二手电商:爱回收偷食闲鱼、转转
- oracle 11客户端精简版,oracle_11g精简版客户端配置
- 【Cesium入门】四、相机系统
- Excel如何批量为员工信息表添加照片
- B站 bilibili 视频、分区、up主数据合集
- ANSYS-材料的选择
- xilinx 权威设计指南_设计产品指标的权威指南