并行与并发的区别

从CUP资源占用角度考虑并发与并行:

  • 并发:单个CPU的操作系统在进行多线程操作时,将CPU运行时间划分成若干个时间片,再将时间片分配给各个线程执行,在一个时间片内只运行一个线程,其他线程处于挂起状态。
  • 并行:对于多CPU系统进行多线程操作,一个CPU在执行一个线程时,另一个CPU执行另一个线程。两个线程互不挣抢CPU资源,可以同时进行。

区别:并行是指两个或者多个线程在同一时刻发生;并发是指两个或者多个线程在同一时间间隔内发生。在单处理机系统中的多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,微观上只是在分时交替执行。

下面的例子更容易理解:

  • 吃饭吃到一半,电话来了,直到吃完饭后才去查看处理,说明不支持并发也不支持并行。
  • 吃饭吃到一半,电话来了,停下来接电话,接完后继续吃饭,说明支持并发。
  • 吃饭吃到一半,电话来了,一边打电话一边吃饭,说明支持并行。

并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。所以区别它们的关键点是:是否是“同时”进行。