并行和并发有什么区别?

并行和并发

并行和并发最早其实描述的是 Java 并发编程里面的概念。他们强调的是 CPU 处理任务的能力。简单来说:

  • 并发,就是同一个时刻,CPU 能够处理的任务数量,并且对于应用程序来说,不会出现卡顿现象。
  • 并行,就是同一个时刻,允许多个任务同时执行,在多核 CPU 架构中,同时执行的任务数量是由核心数决定的,

比如在 4 核 4 线程的 CPU 中,只能同时执行 4 个线程。这两个概念看起来类似,但其实描述的纬度是不同的,并发描述的是程序处理能力的视角,并行描述的是 CPU 处理任务方式的视角,一个是宏观层面,一个是微观层面。他们两个又是相辅相成的,CPU 并行执行任务的能力,又能提升程序的并发处理性能。所以多核 CPU 的性能要比单核 CPU 好。当然,如果是单核 CPU,也可以通过时间片切换的方式提升并发能力。

区别

Erlang 之父 Joe Armstrong 用了一张图片解释了并行和并发的区别。并发就是两个队列交替使用一台咖啡机,并行是两个队列同时使用两台咖啡机。

总结

并行和并发是 Java 并发编程里面的概念。并行,是指在多核 CPU 架构下,同一时刻同时可以执行多个线程的能力。在单核 CPU 架构中,同一时刻只能运行一个线程。在 4 核 4 线程的 CPU 架构中,同一时刻可以运行 4 个线程,那这 4 个线程就是并行执行的。并发,是指在同一时刻 CPU 能够处理的任务数量,也可以理解成 CPU 的并发能力。在单核 CPU 架构中,操作系统通过 CPU 时间片机制提升 CPU 的并发能力 ,在多核 CPU 架构中,基于任务的并行执行能力以及 CPU 时间片切换的能力来提升 CPU的并发能力。 所以,总的来说,并发是一个宏观概念,它指的是 CPU 能够承载的压力大小, 并行是一个微观概念,它描述 CPU 同时执行多个任务的能力。

相关推荐
罗超驿8 小时前
6.Java LinkedList深度解析:从链表原理到源码实践
java·开发语言·链表
2501_948106918 小时前
计算机毕业设计之jsp物业管理系统
java·大数据·开发语言·汽车·课程设计
黑taoA8 小时前
深度解析:Maven核心命令(clean、compile、package、install)与IDEA多模块项目避坑指南
java·maven·intellij-idea
TDengine (老段)8 小时前
TDengine 索引使用指南 — 何时建、怎么建、怎么用
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
逝水无殇8 小时前
C# 反射详解
开发语言·后端·c#
xlxxy_9 小时前
sap获取批次特性报表
java·linux·开发语言·前端·数据库·abap·mm
北冥you鱼9 小时前
Go语言常用包使用指南:从标准库到第三方利器
开发语言·microsoft·golang
俺不中嘞9 小时前
python常用函数
开发语言·python
栋***t9 小时前
从“工具”到“基建”,麦塔在线考试系统经历的时代变局与定位逻辑
java·大数据·数据库·开源软件·无纸化
欢喜躲在眉梢里9 小时前
用飞算Java做了一套新能源充电运营管理系统:把站点、设备、订单拆成可运营的微服务
java·开发语言·微服务·ai编程·技术分享·java开发·飞算javaai炫技赛