并发与并行

并发:

        早期计算机的 CPU 都是单核的,一个 CPU 在同一时间只能执行一个进程/线程,当系统中有多个进程/线程等待执行时,CPU 只能执行完一个再执行下一个。

        计算机在运行过程中,有很多指令会涉及 I/O 操作,而 I/O 操作又是相当耗时的,速度远远低于 CPU,这导致 CPU 经常处于空闲状态,只能等待 I/O 操作完成后才能继续执行后面的指令。

        为了提高 CPU 利用率,减少等待时间,人们提出了一种 CPU 并发工作(多道程序设计)的理论。所谓并发,就是通过一种算法将 CPU 资源合理地分配给多个任务,当一个任务执行 I/O 操作时,CPU 可以转而执行其它的任务,等到 I/O 操作完成以后,或者新的任务遇到 I/O 操作时,CPU 再回到原来的任务继续执行。

  • 并发是指系统能够同时处理多个独立的任务或操作的能力。
  • 在实际场景中,任务的执行可能不是同时发生的,而是交替进行的。
  • 即使在单核 CPU 上,通过时间片轮转等机制,也能实现多个任务之间的并发执行。

下图就以两个图为例:

并发与并行_第1张图片
 

并行:

并发是针对单核 CPU 提出的,而并行则是针对多核 CPU 提出的。和单核 CPU 不同,多核 CPU 真正实现了“同时执行多个任务”。

多核 CPU 内部集成了多个计算核心(Core),每个核心相当于一个简单的 CPU。多核 CPU 的每个核心都可以独立地执行一个任务,而且多个核心之间不会相互干扰。在不同核心上执行的多个任务,是真正地同时运行,这种状态就叫做并行。

  • 并行是指系统同时执行多个任务或操作的能力,通常在多核心系统中体现。
  • 在多核 CPU 中,每个核心可以独立地执行一个任务,实现真正的同时执行。

下面是双核处理两个任务

并发与并行_第2张图片

并发+并行


在上图中,执行任务的数量恰好等于 CPU 核心的数量,是一种理想状态。但是在实际场景中,处于运行状态的任务是非常多的,尤其是电脑和手机,开机就几十个任务,而 CPU 往往只有 4 核、8 核或者 16 核,远低于任务的数量,这个时候就会同时存在并发和并行两种情况:所有核心都要并行工作,并且每个核心还要并发工作。

下面是执行四个任务,三核 CPU 的工作状态如下图所示:(三核并发)

并发与并行_第3张图片

实际场景中的并发和并行

  • 在实际场景中,任务的数量可能远远多于 CPU 核心的数量。
  • 当任务数量大于核心数量时,系统可能同时存在并发和并行的情况。
  • 并行:多个核心同时执行独立的任务。
  • 并发:每个核心内部可能还有多个任务在交替执行。

你可能感兴趣的:(多线程,java,开发语言,多线程)