# 并发与并行

> 原文： [https://howtodoinjava.com/java/multi-threading/concurrency-vs-parallelism/](https://howtodoinjava.com/java/multi-threading/concurrency-vs-parallelism/)

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

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

## 并发

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

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

## 并行

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

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

## 并发与并行之间的差异

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

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

并发是独立执行进程的组成，而并行是同时执行（可能相关）计算。

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

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

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

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

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

就是**并发与并行**，这是 [Java 多线程](//howtodoinjava.com/java-concurrency-tutorial/)概念中非常重要的概念。

学习愉快！