首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >并行还是并发?Java并发名称问题

并行还是并发?Java并发名称问题
EN

Stack Overflow用户
提问于 2021-08-10 03:36:45
回答 3查看 98关注 0票数 0

我从一本烹饪书中了解到,单词之间的主要区别是:并行和并发。

  • 并行:使用多个核心/CPU处理多个任务
  • 并发性:使用一个核心/ CPU处理多个任务,但使用时间框架机制。

因此,我还了解到,Java是一种使用多个核的强大功能同时实现多个任务处理的语言。但是它在此功能上的包名称为java.util.concurrency

为什么java使用并发一词而不是并行?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-10 04:09:17

我不认为“并发”的定义是正确的。

维基百科提供的定义是:

在计算机科学中,并发性是指程序、算法或问题的不同部分或单元在不影响最终结果的情况下,被无序或同时执行的能力。允许并行单元的并行执行,这可以显著提高多处理器和多核系统中执行的总体速度。从技术上讲,并发是指程序、算法或问题分解为顺序独立或部分有序的组件或计算单元。

换句话说,并发包括并行性。(或者至少是使用多个常规CPU或超线程所获得的并行性。)

文章详细介绍了这一术语,并给出了引文引文。

此外,维基百科的文章所说的与其他来源使用“并发”一词的方式是一致的;例如,Brian等人在实践中使用的Java:并发性。

为什么Java使用并发一词而不是并行?

Java使用并发/并发这个术语是正确的。

错误在于你正在使用的“食谱”。

票数 3
EN

Stack Overflow用户

发布于 2021-08-10 09:02:58

并发性和并行性是正交的。

您可以没有并发性的并行性,例如运行在具有超级标量执行、指令管道和SIMD指令的CPU上的单个线程。

您可以在没有并行性的情况下具有并发性;例如,在具有单个CPU的系统上运行的一堆线程(按顺序执行指令)。

并发通常支持并行性。例如,如果您拆分了处理逻辑,以便可以使用不同的线程并行运行部分,那么这些线程通常可以使用不同的CPU并行运行。

票数 1
EN

Stack Overflow用户

发布于 2021-08-10 03:49:57

据我所知,Java的多任务处理基于JVM多线程模型,而并行则更多地基于物理概念中的任务并行。Java很难控制CPU来实现任务并行,只能保证更多的线程是并发的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68720819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档