原文: https://howtodoinjava.com/java/multi-threading/concurrency-vs-parallelism/

并发表示多个任务,这些任务在重叠的时间段内以无特定顺序启动,运行和完成。 并行性是指多个任务或唯一任务的多个部分在字面上同时运行的情况,例如在多核处理器上。 请记住,并发和并行性不是一回事。

让我们更详细地了解当我说并发与并行时的意思。

并发

当我们谈论至少两个或更多任务时,并发本质上是适用的。 当一个应用程序实际上可以同时执行两个任务时,我们将其称为并发应用程序。 尽管这里的任务看起来像是同时运行的,但实际上它们可能不一样。 它们利用操作系统的 CPU 时间分段特性,其中每个任务运行其任务的一部分,然后进入等待状态。 当第一个任务处于等待状态时,会将 CPU 分配给第二个任务以完成其一部分任务。

因此,操作系统根据任务的优先级分配 CPU 和其他计算资源,例如记忆; 依次处理所有任务,并给他们完成任务的机会。 对于最终用户,似乎所有任务都是并行运行的。 这称为并发。

并行

并行不需要两个任务存在。 通过使用 CPU 的多核基础结构,通过为每个任务或子任务分配一个内核,它实际上可以同时运行部分任务或多个任务。

并行性本质上要求具有多个处理单元的硬件。 在单核 CPU 中,您可能会获得并发性,但不能并行化。

并发与并行之间的差异

现在,让我们列出并发和并行之间的显着差异。

并发是两个任务可以在重叠的时间段内启动,运行和完成的时间。 并行是指任务实际上在同一时间运行,例如。 在多核处理器上。

并发是独立执行进程的组成,而并行是同时执行(可能相关)计算。

并发是关于一次处理很多事物的问题。 并行性是关于一次完成很多事情

一个应用程序可以是并发的,但不能是并行的,这意味着它可以同时处理多个任务,但是没有两个任务可以同时执行。

一个应用程序可以是并行的,但不能是并发的,这意味着它可以同时处理多核 CPU 中一个任务的多个子任务。

应用程序既不能是并行的,也不能是并发的,这意味着它一次顺序地处理所有任务。

一个应用程序可以是并行的,也可以是并发的,这意味着它可以同时在多核 CPU 中同时处理多个任务。

就是并发与并行,这是 Java 多线程概念中非常重要的概念。

学习愉快!