并发与并行的区别
并发(concurrency)和并行(parallelism)是两个完全不同的概念。
并发,从它的英语本意来看是竞争的意思。这是理解它的关键。没有竞争,并发就无从谈起。为什么会有竞争,那是因为资源是有限的。资源是一方面是有限的,一方面还要满足不同主体的需求,这就会遇到资源的共享。这样以来,就要指定一些规则,让大家有效,并且安全的利用这些资源。这里的并字,强调的是一种秩序。
并行,和竞争没有半毛钱的关系。并行指的是一个任务的属性,看它能不能被化分成相互独立,可以同时完成的小任务。比如说,有一个任务,是要数一本书一共有多少字,那么这个任务就可以被分成很多份,让小明数十页,小微数另外十页。此处的并字,侧重点是指任务能不能可分,能不能同时进行,来达到加速的目的。
两者,不是一个概念,不对立存在。不同的用法是为了达到不同的目的。一个很好的例子,就是JVM中不同的垃圾回收算法,有的是并发的,有的是并行的。