海码充电站的技术专栏 java Coder

并发- -并发与并行的区别

2018-12-21
watermelon


并行

前言

提到并发,就会想到另一个词:并行。本帖来扒一扒他们的区别

1:并发和并行的区别

举个形象的例子:

你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。  (不一定是同时的)
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。  

并发的关键是你有处理多个任务的能力,不一定要同时。  
并行的关键是你有同时处理多个任务的能力。  
它们最关键的点就是:是否是『同时』。

较为理论的解释: 解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 解释二:并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 解释三:并发是在一台处理器上“同时”处理多个任务,并行是在多台处理器上同时处理多个任务。如hadoop分布式集群

这一切都跟处理器有关(cpu核心)

所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。

总的来说,并行是并发的子集。也就是说我们可以写一个拥有多线程并行的程序,如果在没有多核心CPU来执行这些线程,那就不能以并行的方式来运行程序中的多个线程。所以并发程序可以是并行的,也可以不是

参考:


Comments

Content