精华内容
下载资源
问答
  • 并发(concurrency)和并行(parallellism)是:解释一:并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。解释二:并行是在不同实体上多个事件,并发是在同一实体上多个...

    00997fc9718ca954a6fd2e8a171ca5c7.png

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

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

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

    f86bd751293e94ba1680980b927055d2.png

    并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。

    adce6482840df800249e9d4252dd2599.png


    并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。


    并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行一个操作,多个操作快速切换执行)。

    当有多个线程在操作时,如果系统只有一个 CPU,则它根本不可能真正同时进行一个以上的线程,它只能把 CPU 运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态.这种方式我们称之为并发(Concurrent)。
    当系统有一个以上 CPU 时,则线程的操作有可能非并发。当一个 CPU 执行一个线程时,另一个 CPU 可以执行另一个线程,两个线程互不抢占 CPU 资源,可以同时进行,这种方式我们称之为并行(Parallel)。

    4e27041be89e45655ccae0836db9d01b.png
    展开全文
  • 前言并发和并行并发是指多个任务,这些任务在重叠时间段内以无特定顺序启动,运行和完成。并行是指多个任务或唯一任务多个部分在逻辑上同时运行情况,例如在多核处理器上。请记住,并发和并行性不是一回事。让...

    前言

    并发和并行

    并发是指多个任务,这些任务在重叠的时间段内以无特定顺序启动,运行和完成。并行是指多个任务或唯一任务的多个部分在逻辑上同时运行的情况,例如在多核处理器上。请记住,并发和并行性不是一回事。让我们更详细地了解当我说“并发与并行”的意思。

    并发

    当我们谈论至少两个或更多任务时,并发这个定义是适用的。当一个应用程序实际上可以同时执行两个任务时,我们将其称为并发应用程序。尽管这里的任务看起来像是同时运行的,但实际上它们可能不一样。它们利用操作系统的CPU时间分片功能,其中每个任务运行其任务的一部分,然后进入等待状态。当第一个任务处于等待状态时,会将CPU分配给第二个任务以完成其一部分任务。

    操作系统根据任务的优先级分配CPU和其他计算资源,例如内存;依次处理所有任务,并给他们完成任务的机会。对于最终结果来看,用户感觉所有任务都是同时运行的,这称为并发。

    并行

    并行不需要两个任务存在。通过为每个任务或子任务分配一个内核,它实际上使用多核CPU基础结构同时运行部分任务或多个任务。

    并行性本质上要求具有多个处理单元的硬件。在单核CPU中,您可能会获得并发性,但不能获得并行性。

    并发与并行之间的区别现在,让我们列出并发与并行之间的显着区别。并发是两个任务可以在重叠的时间段内启动,运行和完成的时间。并行是指任务实际上在同一时间运行,例如。在多核处理器上。

    并发是由独立执行的进程组成,而并行性是同时执行(相关的)计算。

    并发就是一次处理很多事情。并行是关于一次做很多事情。

    一个应用程序可以是并发的,但不能是并行的,这意味着它可以同时处理多个任务,但是没有两个任务可以同时执行。

    一个应用程序可以是并行的,但不能是并发的,这意味着它可以同时处理多核CPU中一个任务的多个子任务。

    一个应用程序既不能是并行的,也不能是并发的,这意味着它一次顺序地处理所有任务。

    一个应用程序可以是并行的,也可以是并发的,这意味着它可以同时在多核CPU中同时处理多个任务。

    这就是并发与并行的关系,这是Java多线程概念中非常重要的概念。

    学习愉快!

    Concurrency vs. Parallelism.

    Concurrency means multiple tasks which start, run, and complete in overlapping time periods, in no specific order.Parallelism is when multiple tasks OR several part of a unique task literally run at the same time, e.g. on a multi-core processor. Remember that Concurrency and parallelism are NOT the same thing.

    Let’s understand more in detail that what I mean when I say Concurrency vs. Parallelism.

    Concurrency

    Concurrency is essentially applicable when we talk about minimum two tasks or more. When an application is capable of executing two tasks virtually at same time, we call it concurrent application. Though here tasks run looks like simultaneously, but essentially they MAY not. They take advantage of CPU time-slicing feature of operating system where each task run part of its task and then go to waiting state. When first task is in waiting state, CPU is assigned to second task to complete it’s part of task.

    Operating system based on priority of tasks, thus, assigns CPU and other computing resources e.g. memory; turn by turn to all tasks and give them chance to complete. To end user, it seems that all tasks are running in parallel. This is called concurrency.

    Parallelism

    Parallelism does not require two tasks to exist. It literally physically run parts of tasks OR multiple tasks, at the same time using multi-core infrastructure of CPU, by assigning one core to each task or sub-task.

    Parallelism requires hardware with multiple processing units, essentially. In single core CPU, you may get concurrency but NOT parallelism.

    Differences between concurrency vs. parallelism

    Now let’s list down remarkable differences between concurrency and parallelism.

    Concurrency is when two tasks can start, run, and complete in overlapping time periods. Parallelism is when tasks literally run at the same time, eg. on a multi-core processor.

    Concurrency is the composition of independently executing processes, while parallelism is the simultaneous execution of (possibly related) computations.

    Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once.

    An application can be concurrent – but not parallel, which means that it processes more than one task at the same time, but no two tasks are executing at same time instant.

    An application can be parallel – but not concurrent, which means that it processes multiple sub-tasks of a task in multi-core CPU at same time.

    An application can be neither parallel – nor concurrent, which means that it processes all tasks one at a time, sequentially.

    An application can be both parallel – and concurrent, which means that it processes multiple tasks concurrently in multi-core CPU at same time .

    That’s all about Concurrency vs. Parallelism, a very important concept in java multi-threading concepts.

    Happy Learning !!

    展开全文
  • 前言并发和并行的区别,相信很多初出茅庐的程序员都会被问到这个问题吧,这两个概念极容易混淆。今天,我们就来通俗地聊聊并发和并行的区别。概念通俗的讲解之前,先看一下并发和并行的概念吧。并发并发...

    前言

    并发和并行的区别,相信很多初出茅庐的程序员都会被问到这个问题吧,这两个概念极容易混淆。今天,我们就来通俗地聊聊并发和并行的区别。

    概念

    通俗的讲解之前,先看一下并发和并行的概念吧。

    并发:并发(Concurrent),在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。

    并行:并行(Parallel),当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

    并行

    我们在玩电脑的时候,计算机可以“同时”运行着音乐软件和IDEA,我们可以边敲代码,边听音乐,计算机同时的在做多件事情。在单核cpu的计算机中,我们似乎也能“同时”做这些事情,但这不是真正意义上的并行,其底层是由于cpu快速切换执行任务,给我们一种同时运行的错觉而已。但是,当计算机是多核cpu的时候,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这时候才是真正的“同时”进行,我们称之为并行。就好比,一个网吧,它有多台电脑可以同时满足多位客户的上网需求,这就是并行,同时进行,互不争抢。

    并发

    并发,指的是多个事情,在同一段时间段内发生了。 同样,我们可以拿网吧来举例子。例如,一个网吧每天晚上六点到晚上十点的用户量特别大,这时候可以称之为并发量大。假如该网吧有100个机子,但是晚上六点到晚上十点却有一百五十人来上网,这时候就有五十人无法正常上网,要么该五十人在此等待,要么就离开网吧。网吧处理这个一百五十人的上网请求,不是在同一时刻进行的,而是在一段时间内处理的。其实,这就是并发。

    并发和并行的区别

    总的来说,并发,指的是多个事情,在同一时间段内同时发生了;并行,指的是多个事情,在同一时间点上同时发生了。这两者都是处理多个事情,区别就是在于是否“同时”。也可以用下图很好的理解

    101f2cf420d7288d6a92a4edac29d351.png

    图片来源与互联网,侵权删除

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

    2019-09-23 18:02:11
    并发和并行的区别 1.区别 (1)并行:并行是指两个或者多个事件在同一时刻发生 ,并发:指两个或多个事件在同一时间间隔发生 (2)并行是在不同实体上的多个事件,并发是在同一实体上的多个事件 2.问题 问:并发...

    并发和并行的区别

    1.区别

    (1)并行:并行是指两个或者多个事件在同一时刻发生 ,并发:指两个或多个事件在同一时间间隔发生
    (2)并行是在不同实体上的多个事件,并发是在同一实体上的多个事件

    2.问题

    问:并发是不是一个线程,并行是多个线程?
    答:并发和并行都可以是多个线程,就看这些线程能不能同时被(多个)CPU执行,如果可以就说明是并行,而并发是多个线程被(一个)cpu轮流切换着执行。

    3.例子

    假设一个有三个学生需要辅导作业,帮每个学生辅导完作业是一个任务
      顺序执行:老师甲先帮学生A辅导,辅导完之后再取给B辅导,最后再去给C辅导,效率低下 ,很久才完成三个任务
      并发:老师甲先给学生A去讲思路,A听懂了自己书写过程并且检查,而甲老师在这期间直接去给B讲思路,讲完思路再去给C讲思路,让B自己整理步骤。这样老师就没有空着,一直在做事情,很快就完成了三个任务。与顺序执行不同的是,顺序执行,老师讲完思路之后学生在写步骤,这在这期间,老师是完全空着的,没做事的,所以效率低下。
      并行:直接让三个老师甲、乙、丙三个老师“同时”给三个学生辅导作业,也完成的很快。
      
    4.总结

    如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统。如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。并发系统与并行系统这两个定义之间的关键差异在于“存在”这个词。

    在并发程序中可以同时拥有两个或者多个线程。这意味着,如果程序在单核处理器上运行,那么这两个线程将交替地换入或者换出内存。这些线程是同时“存在”的——每个线程都处于执行过程中的某个状态。如果程序能够并行执行,那么就一定是运行在多核处理器上。此时,程序中的每个线程都将分配到一个独立的处理器核上,因此可以同时运行。

    我相信你已经能够得出结论——“并行”概念是“并发”概念的一个子集。也就是说,你可以编写一个拥有多个线程或者进程的并发程序,但如果没有多核处理器来执行这个程序,那么就不能以并行方式来运行代码。因此,凡是在求解单个问题时涉及多个执行流程的编程模式或者执行行为,都属于并发编程的范畴。

    展开全文
  • 并发性和并行的区别 并发越来越成为现代应用程序中非常重要的方面。 随着我们扩展到更高的流量和需求水平,对多个并发执行线程的需求也越来越大。 因此,由依赖项注入器管理的对象的角色非常重要。 单例是这种需求...
  • 现在我们都说设计可并行、高并发的程序,而且我们很多时候会在潜意识里觉得自己对并行(Parallelism)和并发(Concurrency)的区别很清楚,但如果要明确的说出二者的区别,又感觉没办法给出一个非常清晰的描述。...
  • 并行和并发的区别

    千次阅读 多人点赞 2019-05-13 09:40:22
    并行和并发有什么区别并行(parallelism),是同一时刻,两个线程都在执行并发(concurrency),是同一时刻,只有一个执行,但是一个时间段内,两个线程都执行了。 并行 并发 【Java面试题与答案...
  • 现在我们都说设计可并行、高并发的程序,而且我们很多时候会在潜意识里觉得自己对并行(Parallelism)和并发(Concurrency)的区别很清楚,但如果要明确的说出二者的区别,又感觉没办法给出一个非常清晰的描述。...
  • 并发和并行的区别

    千次阅读 2014-07-04 15:56:29
    并发和并行的区别 所有的并发处理都有排队等候,唤醒,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,390
精华内容 556
关键字:

并发执行和并行执行的区别