并行和并发有什么区别?

并行和并发

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

相关推荐
20岁30年经验的码农29 分钟前
Spring Cloud Gateway 网关技术文档
java
likuolei2 小时前
XML DOM 节点类型
xml·java·服务器
ZHE|张恒3 小时前
Spring Bean 生命周期
java·spring
夏天的味道٥4 小时前
@JsonIgnore对Date类型不生效
开发语言·python
q***38515 小时前
SpringCloud实战十三:Gateway之 Spring Cloud Gateway 动态路由
java·spring cloud·gateway
小白学大数据5 小时前
Python爬虫伪装策略:如何模拟浏览器正常访问JSP站点
java·开发语言·爬虫·python
SEO_juper6 小时前
别再纠结LLMs.txt了!它背后的真相与最佳使用场景,一文讲透。
开发语言·ai·php·数字营销
程序员西西6 小时前
SpringBoot接口安全:APIKey保护指南
java·spring boot·计算机·程序员·编程·编程开发
g***B7386 小时前
JavaScript在Node.js中的模块系统
开发语言·javascript·node.js
summer_west_fish6 小时前
单体VS微服务:架构选择实战指南
java·微服务·架构