前言

并发和并行的区别,相信很多初出茅庐的程序员都会被问到这个问题吧,这两个概念极容易混淆。今天,我们就来通俗地聊聊并发和并行的区别。

概念

通俗的讲解之前,先看一下并发和并行的概念吧。

并发:并发(Concurrent),在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。

并行:并行(Parallel),当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

并行

我们在玩电脑的时候,计算机可以“同时”运行着音乐软件和IDEA,我们可以边敲代码,边听音乐,计算机同时的在做多件事情。在单核cpu的计算机中,我们似乎也能“同时”做这些事情,但这不是真正意义上的并行,其底层是由于cpu快速切换执行任务,给我们一种同时运行的错觉而已。但是,当计算机是多核cpu的时候,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这时候才是真正的“同时”进行,我们称之为并行。就好比,一个网吧,它有多台电脑可以同时满足多位客户的上网需求,这就是并行,同时进行,互不争抢。

并发

并发,指的是多个事情,在同一段时间段内发生了。 同样,我们可以拿网吧来举例子。例如,一个网吧每天晚上六点到晚上十点的用户量特别大,这时候可以称之为并发量大。假如该网吧有100个机子,但是晚上六点到晚上十点却有一百五十人来上网,这时候就有五十人无法正常上网,要么该五十人在此等待,要么就离开网吧。网吧处理这个一百五十人的上网请求,不是在同一时刻进行的,而是在一段时间内处理的。其实,这就是并发。

并发和并行的区别

总的来说,并发,指的是多个事情,在同一时间段内同时发生了;并行,指的是多个事情,在同一时间点上同时发生了。这两者都是处理多个事情,区别就是在于是否“同时”。也可以用下图很好的理解

转载于:https://www.cnblogs.com/happy4java/p/11206005.html

通俗易懂地理解并发和并行的区别相关推荐

  1. 如何理解并发和并行的区别

    首先我们要先理解什么是并发和并行: 并发的概念-在一定时间内系统能够处理的任务数 并行的概念是----指应用能够同时执行不同的任务 结合例子来说明: 并发:早上排队去在一个窗口买早餐所有人按照先后顺序 ...

  2. 并发与并行的区别(超级通俗易懂)

    学习多线程的时候会遇到一个名词:并发.这是属于操作系统中的词汇,需要了解并发和并行的区别,从网上搜集了几种说法帮助理解. 一: 并发是指一个处理器同时处理多个任务. 并行是指多个处理器或者是多核的处理 ...

  3. java并发和并行的区别

    概念: 并发:以交替的方式 利用等待某件事情完成的时间  来做其他事情,轮流执行任务,不一定同时.宏观上同时,微观上依次执行. 并行:在同一时刻,任务同时开始进行,彼此没有依赖关系.多个任务同一时刻同 ...

  4. 转:并发与并行的区别

    转: https://www.jianshu.com/p/b11e251d3dc7 并发:一个处理器同时处理多个任务.(concurrency) 单个cpu逻辑上同时处理多个任务: 并行:多个处理器或 ...

  5. 如何向纯洁的女朋友解释并发与并行的区别?

    原文链接:并发与并行的区别 现在我们都说设计可并行.高并发的程序,而且我们很多时候会在潜意识里觉得自己对并行(Parallelism)和并发(Concurrency)的区别很清楚,但如果要明确的说出二 ...

  6. 操作系统中并发和并行的区别和联系

    多线程中并发和并行有区别吗? 搞不懂并发和并行分别是什么意思? 一文通俗的解释并发和并行的区别和联系. 本人一直以为并发和并行是一个意思,直到偶然从站长公众号上看到了并发和并行的区别一文,因此做个笔记 ...

  7. 多线程并发和并行的区别

    背景  对于java开发从业人员来说,并发编程是绕不开的话题,juc并发包下提供了一系列多线程场景解决方案.  随着jdk1.8的普及,多线程处理问题,除了使用使用线程池(ExecutorServic ...

  8. 并发和并行的区别_多核、多处理器、并发、并行、超线程概念总结

    多核与多处理器 多核( ) 多核处理器就是指单个 CPU 中有多个可执行单元. 如下图所示,单个 CPU 中有两套可执行单元. 多处理器( ) 多处理器系统则是一个拥有多个 CPU 的系统.每个 CP ...

  9. 程序与进程的区别,并发与并行的区别,多进程的实现原理

    目录 1. 什么是进程 2. 进程与程序的区别 3. 并发与并行 4. 同步\异步and阻塞\非阻塞(重点) 5. 进程的创建(了解) 6. 进程的终止(了解) 7. 进程的层次结构 8. 进程的状态 ...

  10. 一个“制作午餐”的故事,帮助你理解并发和并行(上)

    导读 这是一个关于"午餐时间"的小故事,用于阐述 threading.asyncio.multiprocessing.cloud functions 等内容.为了方便阅读并理解文章 ...

最新文章

  1. linux shell中小数的运算
  2. Boost.Signals2 的有序插槽 hello world 示例
  3. 【Java】生成 .json格式文件工具类
  4. 雷林鹏分享:C# 多态性
  5. Science:这种算法,也许将创造更公平的人工智能
  6. 面向对象编程设计练习题(1)
  7. Vue之v-if, v-else, v-show, v-for, v-bind
  8. 移动端自动化测试:python+appium+pytest+allure+yaml
  9. .tar.gz和.tar.bz2解压命令
  10. mysql 查询最早 表_MySQL-如何查询表中最早时间和最晚时间
  11. vue.config.js跨域配置
  12. 企业微信每日定时自动上报
  13. Java+Swing实现自助取款机(ATM)系统-TXT存储数据
  14. 曼哈顿距离最小生成树(树状数组)
  15. 想换4K显示器了?那你搞懂啥是4K了吗?
  16. 2021年安全员-B证找解析及安全员-B证模拟考试题
  17. CAD高版本转低版本怎么转?分享几种好用的转换方法
  18. IDEA代码提示快捷键Ctrl+Space不生效问题
  19. 二硫化钼量子点修饰纳米金棒/CdS纳米棒|二硫化钼量子点/g-C3N4复合光催化剂|马来酰亚胺修饰二硫化钼MoS2-MAL
  20. Java实现一个简单双色球摇奖功能

热门文章

  1. 又补充研究了OPENJDK LINUX版本打印变形字体的问题
  2. 软件基本功:linux/windows的头文件互相包含,大哥你这是什么创新?
  3. 别人问了个问题:有没有选择JAVA开发的设计文档
  4. 黑洞内部垂直向上发射光子,会怎样
  5. 编译OpenJDK8:configure error /usr/lib64/ccache/gcc is a symbolic link to ccache
  6. 公寓式楼房宜南北走向
  7. 进程分配之交叉分配法
  8. 染色法判断是否是二分图
  9. C++中使用GSoap
  10. java数组函数_Java数组