我从一本烹饪书中了解到,单词之间的主要区别是:并行和并发。
因此,我还了解到,Java是一种使用多个核的强大功能同时实现多个任务处理的语言。但是它在此功能上的包名称为java.util.concurrency。
为什么java使用并发一词而不是并行?
发布于 2021-08-10 04:09:17
我不认为“并发”的定义是正确的。
维基百科提供的定义是:
在计算机科学中,并发性是指程序、算法或问题的不同部分或单元在不影响最终结果的情况下,被无序或同时执行的能力。允许并行单元的并行执行,这可以显著提高多处理器和多核系统中执行的总体速度。从技术上讲,并发是指程序、算法或问题分解为顺序独立或部分有序的组件或计算单元。
换句话说,并发包括并行性。(或者至少是使用多个常规CPU或超线程所获得的并行性。)
文章详细介绍了这一术语,并给出了引文引文。
此外,维基百科的文章所说的与其他来源使用“并发”一词的方式是一致的;例如,Brian等人在实践中使用的Java:并发性。
为什么Java使用并发一词而不是并行?
Java使用并发/并发这个术语是正确的。
错误在于你正在使用的“食谱”。
发布于 2021-08-10 09:02:58
并发性和并行性是正交的。
您可以没有并发性的并行性,例如运行在具有超级标量执行、指令管道和SIMD指令的CPU上的单个线程。
您可以在没有并行性的情况下具有并发性;例如,在具有单个CPU的系统上运行的一堆线程(按顺序执行指令)。
并发通常支持并行性。例如,如果您拆分了处理逻辑,以便可以使用不同的线程并行运行部分,那么这些线程通常可以使用不同的CPU并行运行。
发布于 2021-08-10 03:49:57
据我所知,Java的多任务处理基于JVM多线程模型,而并行则更多地基于物理概念中的任务并行。Java很难控制CPU来实现任务并行,只能保证更多的线程是并发的。
https://stackoverflow.com/questions/68720819
复制相似问题