java - 并行还是并发?Java并发命名问题
问题描述
我从一本食谱中了解到这两个词之间的主要区别:并行和并发。
- 并行:使用多个内核/CPU 处理多个任务
- 并发性:使用一个内核/CPU但使用时间框架机制处理多个任务。
所以我也了解到Java是一种利用多核的力量同时实现多任务处理的语言。但它对这个能力的包名叫做java.util.concurrency
.
为什么java使用并发这个词而不是并行?
解决方案
我不认为“并发”的定义是正确的。
维基百科提供的定义是:
“在计算机科学中,并发是程序、算法或问题的不同部分或单元的能力,可以乱序执行或同时执行部分顺序,而不影响最终结果。这允许并行执行并发单元的数量,可以显着提高多处理器和多核系统中的整体执行速度。在更专业的术语中,并发是指程序、算法或问题可分解为顺序无关或部分顺序的组件或计算单位。”
换句话说,并发包括并行性。(或者至少,您使用多个传统 CPU 或超线程获得的那种并行性。)
文章更详细地介绍了该术语的介绍,并提供了文献引用。
此外,维基百科文章所说的与其他来源使用“并发”一词的方式一致;例如 Java:Brian Goetz 等人的 Concurrency in Practice。
为什么 Java 使用并发这个词而不是并行?
Java 使用术语并发/并发是正确的。
错误出现在您正在使用的“食谱”中。
推荐阅读
- scala - 产品需求时间序列的线性回归 SGBD
- java - spring注解@ConditionalOnMissingBean有什么作用?
- ms-access - MS Access 2010:表单打开时的 VBA 导致表单锁定
- java - 如何使用 JProfiler 在调试模式下分析 Java 应用程序
- javascript - 在另一个函数运行后杀死一个函数
- vba - 带有 application.worksheetfunction 的数组上的不匹配错误
- node.js - image.onload 没有在 node.js 中触发
- autodesk-forge - 对 Forge/BIM360 Docs 文件列表进行分页的最佳方法是什么?
- .htaccess - 重定向到 SSL 和非 www
- excel - 如何使用 Oracle Forms 获取 Excel 文件的最后一行