并发和并行有什么区别?

做并发编程之前,必须首先理解什么是并发,什么是并行,什么是并发编程,什么是并行编程。

并发(concurrency)和并行(parallellism)是:

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

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

通俗点说 并发就是不同线程同时干一件事情 并行就是不同线程同时干不同的事情       

  • 也就是说并发必然牵扯到应用系统中资源的竞争

    《并发的艺术》中大概是这样写的,系统中有多个任务同时存在可称之为“并发”,系统内有多个任务同时执行可称之为“并行”;并发是并行的子集。比如在单核CPU系统上,只可能存在并发而不可能存在并行。

    并发是逻辑上的同时发生,并行更多是侧重于物理上的同时发生。并发往往是指程序代码的结构支持并发,并发的程序在多cpu上运行起来才有可能达到并行,并行往往是描述运行时的状态。

    3.解释三:在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群
    并发:在一台处理器上”同时”处理多个任务
    并行:在多台处理器上同时处理多个任务,比如说hadoop分布式集群

    并行 : 双十一 , 零时零分零秒,三十万用户同时登录淘宝网

    并发 : 双十一 , 零时零分零秒 至 两点零分零秒 共有一百万用户登录淘宝网.

原文地址:https://www.cnblogs.com/dongguolei/p/8039889.html