并行和并发有什么区别?

并行和并发

并行和并发最早其实描述的是 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 同时执行多个任务的能力。

相关推荐
weixin_440784112 小时前
【HandlerThread实现原理】
android·java·开发语言
天空'之城2 小时前
C 语言工业级通用组件手写 24:互补滤波
c语言·开发语言·互补滤波·嵌入式算法·工业级组件
leoZ2312 小时前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
XR1234567882 小时前
工厂车间无线网络方案对比:AGV漫游哪家强?
开发语言·php
傻啦嘿哟3 小时前
某短视频平台视频爬虫实战:抓取推荐流视频信息,绕过反爬的3种技巧
开发语言·爬虫·python
現実君3 小时前
【硬件进阶】AD22上位替换JLEDA教程
开发语言·php
mubei-1233 小时前
SpringDAO的用法
java·开发语言·数据库
happymagic3 小时前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
格林威6 小时前
多相机微秒级对齐:硬件触发 vs PTP(IEEE 1588)方案实战对比
开发语言·人工智能·数码相机·机器学习·计算机视觉·视觉检测·机器视觉
都叫我大帅哥6 小时前
给 Java 程序员的 CSRF 攻击详解:从原理到防御实战
java