精华内容
下载资源
问答
  • 并发和并行区别秒懂

    万次阅读 多人点赞 2018-06-19 12:04:45
    你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。(不一定是同时的) 你吃饭吃到...

    你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。

    你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。  (不一定是同时的)

    你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。  

     

    并发的关键是你有处理多个任务的能力,不一定要同时。  

    并行的关键是你有同时处理多个任务的能力。  

     

    所以我认为它们最关键的点就是:是否是『同时』。

    并发是轮流处理多个任务,并行是同时处理多个任务

     

     

    并行的两个重要定律
    Amdahi定律
    Amdahi定律定义了串行系统并行化后的加速比公式。

    加速比定义:加速比 = 优化前系统耗时 / 优化后系统耗时

    加速比越高,说明优化越明显。简单介绍一下Amdahi定律公式的推导。
    优化后耗时T_n=T1(F+1/n(1-F)),其中T1表示优化前耗时,F表示串行比例,(1-F)表示并行比例,下标n就是处理器的个数。
    导入加速比公式,也就是T1/T_n,也就是
    T_n=T1(F+1/n(1-F)),公式只是进行简单介绍。

    从公式可以看出,加速比是和串行比例F成反比的,从公式可以看出增加cpu的个数仅仅是一种提供加速比的方法,增加cpu个数的同时,还可以提供降低串行比例来做,也就是串行比例F越低,加速比也就越高

    Gustafson定律
    Custafson公式也是并行的一个比较重要的公式,现在介绍一下Custafson公式的推导。

    定义一下串行执行时间为a,并行执行时间为b。即单核CPU情况,执行时间为a+b总执行时间为a+nb,n表示CPU个数。

    //定义串行比例
    F=a/(a+b)

    //得到加速比
    s(n)=a+nb/a+b=a/a+b + nb/a+b = F + n*(b-a+a)/a+b = F + n(1-F)

    从公式可以看出,如果串行比例足够小的情况,加速比其实就是约等于处理器个数,也就是说通过加多CPU的个数就能提高加速比。

    两个公式看起来似乎有点矛盾,其实不然,两个公式只是从不同角度分析问题。Amdahi是说在串行比例一定时,通过加CPU的方法是有上限的,通过降低串行比例同时增加cpu个数可以提高加速比。Custafson是说在串行比较趋于很小的情况,从公式可以看出,加cpu就可以提高加速比
    --------------------- 
    并行的两个重要定律摘自原文:https://blog.csdn.net/u014427391/article/details/85019834 

     

    展开全文
  • 并发和并行区别

    2019-12-14 11:18:01
    并发:一段时间内多个程序可以运行,一个CPU即可 并行:一个时间点内多个程序可以运行,得多个CPU 并发只要满足某个时间段多个程序一起运行即可,通过CPU的调度,看起来好像多个程序一起运行。 并行,指的的是某...

    并发:一段时间内多个程序可以运行,一个CPU即可

    并行:一个时间点内多个程序可以运行,得多个CPU

    并发只要满足某个时间段多个程序一起运行即可,通过CPU的调度,看起来好像多个程序一起运行。

    并行,指的的是某一瞬间,多个程序一起运行,单个CPU不能满足条件。

    展开全文
  • 通俗理解并发和并行区别

    万次阅读 2018-09-24 10:44:29
    所有的并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的...

    转载http://blog.51cto.com/3961409/759708感谢博主

     

    以下的红字是我的理解与原博主无关

     

    所有的并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的请求同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,而先后进入队列排队等候执行。

     

    并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

     

    并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。 并行性指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。

     

    并发,是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序。

     

    并发

    并行,是每个cpu运行一个程序。

     

    简而言之就是并发是多个事件在同一时间段执行,而并行是多个事件在同一时间点执行。(请仔细品味以上两个图)

     

    打个比方。并发,就像一个人(cpu)喂2个孩子(程序),轮换着每人喂一口,表面上两个孩子都在吃饭。并行,就是2个人喂2个孩子,两个孩子也同时在吃饭。

    展开全文
  • 多线程并发和并行区别

    千次阅读 2020-09-13 14:35:34
     那么并行和并发又有什么区别?究竟改如何选择?滥用时又会有什么影响?   这些问题我分以下几篇文章进行详细说明:   1. 多线程并发和并行区别   2. parallelStream()并行滥用的后果   3

    背景

     对于java开发从业人员来说,并发编程是绕不开的话题,juc并发包下提供了一系列多线程场景解决方案。
     随着jdk1.8的普及,多线程处理问题,除了使用使用线程池(ExecutorService),很多人选择了parallelStream() 并行流,底层使用forkjoin实现并行处理。
     那么并行和并发又有什么区别?究竟改如何选择?滥用时又会有什么影响?
      这些问题我分以下几篇文章进行详细说明:
      1. 多线程并发和并行的区别 (本文)
      2. parallelStream()并行滥用的后果
      3. forkjoin和forkjoinpool讲解
      4. 线程池正确用法

    并发和并行共同点

    • 都利用多线程技术
    • 目的都是提高CPU的使用率

    并发和并行区别

    侧重点不同

    • 并发(concurrency):强调一个处理器同时处理多个任务,并不是正在同时运行。
    • 并行(parallelism):强调多个处理器或者是多核的处理器同时处理多个不同的任务,同时运行多段代码
      在这里插入图片描述

    使用场景不同

    • io密集场景
      场景应用程序开发,提供http接口、数据库查询、微服务调用都是io请求,io等等时几乎不消耗cpu,这是为了提供cup使用率,建议使用多线程并发,线程数可以远大于cpu核数。
    • cup密集场景
      对应大量的加减乘除运算、md5、hash等运算操作,需要持续使用cpu,需要让多核cpu并行运算,适合使用forkjoin并行计算。
      技术场景多线程不足,使用多线程技术,也能提高性能,但是线程设置过大会浪费cpu线程切换的时间,如果线程任务分配不均匀,会导致有的cpu忙碌有的cpu空闲

    技术栈不同

    • 并发编程
      jdk1就支持多线程Thread
      jdk5加入Thread pool和juc
      这些都是对多线程的支持,多线程代码可以单核cpu和多核cpu机器上,使用多线程可以在io并发高时,有效利用cpu资源。
    • 并行编程
      jdk7加入fork-join库
      jdk8加人parallelstream
      这些是对并行计算的支持,目的是同时使用多核cpu进行高效计算
    展开全文
  • 但在这当中,发现一些概念区分起来很难,比如并发和并行,同步异步,阻塞非阻塞,但是这些概念却很重要。因此在此把它总结下来。并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间...
  • 并行和并发区别

    万次阅读 多人点赞 2019-05-13 09:40:22
    并行和并发有什么区别并行(parallelism),是同一时刻,两个线程都在执行。 并发(concurrency),是同一时刻,只有一个执行,但是一个时间段内,两个线程都执行了。 并行 并发 【Java面试题与答案...
  • 每天进步一点点! 并发和并行区别是什么? 并发:多个任务在同一个CPU核上,按细分的时间片轮流执行,从逻辑上看任务是同时执行的; 并行:多个处理器或多核处理器同时处理多个任务。 ...
  • 摘要:并发并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行,也亦是说并发事件之间不一定要同一...
  • JS中 并发(concurrency)和并行(parallelism)区别 1.并发:宏观概念,有两个任务AB,在一段时间内,通过在AB两个任务间切换,来完成两个任务,这种情况较并发 2.并行:微观概念,假设CPU有两个核心,那么我们...
  • 并发和并行区别

    万次阅读 多人点赞 2018-07-14 09:36:14
    1、并发:指两个或多个事件在同一时间间隔内发生,即交替做不同事的能力,多线程是并发的一种形式。2、并行:指两个或者多个事件在同一时刻发生,即同时做不同事的能力。...
  • 并发和并行区别

    千次阅读 多人点赞 2018-10-31 17:12:26
    并发(concurrency)是问题域中的概念-程序需要被设计成能够处理多个同时(或者几乎同时)发生的事件;而并行(parallellism)则是方法域中的概念-通过将问题中的多个部分并行执行,来加速解决问题。 引用Rob Pike...
  • 首先我们要先理解什么是并发和并行: 并发的概念—在一定时间内系统能够处理的任务数 并行的概念是----指应用能够同时执行不同的任务 结合例子来说明: 并发:早上排队去在一个窗口买早餐所有人按照先后顺序去买早餐 ...
  • 【Java面试】我终于理解了并发并行的区别并发并行画图理解总结参考资料 用工作中开发来举个例子吧。 并发 同一时间有两个需求,需求AB分配到了你的手上,而且这两个需求都很急,你为这两个需求分别开了两个分支A...
  • 纠错--并发和并行区别

    千次阅读 多人点赞 2019-10-24 19:45:30
    并行和并发性是既相似又有区别的两个概念,再开始分析之前,我们先给出并发和并行的概念。 ​ 并行是指两个或多个时间在同一时刻发生。 ​ 并发是指两个或多个事件在同一时间间隔内发生。 ​ 大家看到的图一般...
  • 并发并行区别

    万次阅读 多人点赞 2016-05-22 23:17:31
    这是属于操作系统中的词汇,需要了解并发和并行区别,从网上搜集了几种说法帮助理解。 一: 并发是指一个处理器同时处理多个任务。 并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。 并发是逻辑...
  • 详解并发和并行意义

    万次阅读 多人点赞 2017-12-20 10:28:52
    很多人不是特别明白并发编程和并行编程的区别所在,有很多人很容易搞混淆,觉得二者近似相等,本文将用几个浅显易懂的例子,来说明一下什么是并发和并行。 1、任务与多任务  关于什么是进程,什么是线程,这里不...
  • java中并发和并行区别

    千次阅读 2020-04-16 12:14:45
    并发和并行 并发是指两个程序或以上在同一时间段上发生 并行是指两个程序或以上在同一时刻上发生(同时发生) 在操作系统中,安装了多个程序,并发是指在一段时间内宏观上有多个程序同时运行,这在单cpu系统中,每...
  • 多个线程在操作时,如果系统只有一个CPU,那它不可能真正同时进行多个线程,它只能把CPU运行时间划分成若干段,再将时间段分配给各个线程执行。在一个时间段的线程代码运行时,其他线程...这种方式我们叫做并行。 ...
  • 并发和并行

    千次阅读 2018-08-28 09:39:13
    并行 是针对多处理器维度说的,每个处理器都有独自计算的能力,多个处理器同时计算就是并行 并发 是针对单处理器的维度说的,每个处理器在同时处理多个任务,其实准确的说,并不是同时执行,只是多个任务直接切换的特别...
  • 并发和并行有什么区别

    千次阅读 2018-10-03 13:38:22
    并发(concurrency)和并行(parallellism)是: 解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 解释二:并行是在不同实体上的多个事件,并发是在同一实体上的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 244,692
精华内容 97,876
关键字:

并发和并行的区别