首页 > 解决方案 > 并行还是并发?Java并发命名问题

问题描述

我从一本食谱中了解到这两个词之间的主要区别:并行和并发。

所以我也了解到Java是一种利用多核的力量同时实现多任务处理的语言。但它对这个能力的包名叫做java.util.concurrency.

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

标签: java

解决方案


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

维基百科提供的定义是:

“在计算机科学中,并发是程序、算法或问题的不同部分或单元的能力,可以乱序执行或同时执行部分顺序,而不影响最终结果。这允许并行执行并发单元的数量,可以显着提高多处理器和多核系统中的整体执行速度。在更专业的术语中,并发是指程序、算法或问题可分解为顺序无关或部分顺序的组件或计算单位。”

换句话说,并发包括并行性。(或者至少,您使用多个传统 CPU 或超线程获得的那种并行性。)

文章更详细地介绍了该术语的介绍,并提供了文献引用。

此外,维基百科文章所说的与其他来源使用“并发”一词的方式一致;例如 Java:Brian Goetz 等人的 Concurrency in Practice。


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

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

错误出现在您正在使用的“食谱”中。


推荐阅读