并发、并行与多线程关系

概述

【并发】:多任务快速切换、宏观上像是同时进行(微观不是)
【并行】:多任务同时进行、微观上同时进行(包含宏观)
【多线程】:一个进程下有多个线程。各个线程执行自己的任务,这些线程可以”同时进行“(可能同时包含并发与并行)

并发详解

  1. Concurrency,是并发的意思。并发的实质是一个物理CPU(单核) 在若干线程之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
  2. 微观角度:所有的并发处理都有排队等候,唤醒,执行等这样的步骤,在微观上他们都是序列被处理的,先后进入队列排队等候执行。
  3. 宏观角度:多个几乎同时到达的请求(或线程)在宏观上看就像是同时在被处理。
  4. 通俗点讲,并发就是只有一个CPU资源,程序(或线程)之间要竞争得到执行机会。并发过程中,任务并不是同时在进行的(微观角度)。但又是同时进行的(宏观角度)

并行详解

并行

  1. Parallelism,即并行,指两个或两个以上事件(或线程)在同一时刻发生,是真正意义上的不同事件或线程在同一时刻,在不同CPU资源呢上(多核),同时执行。
  2. 并行,不存在像并发那样竞争,等待的概念。
  3. 同时运行(微观,宏观)

多线程实现并发,并行详解

  1. java中的Thread类定义了多线程,通过多线程可以实现并发或并行。
  2. 当多个线程被分配同一个CPU核心执行,是多线程实现并发。
  3. 当多个线程同一时刻被分配到不同CPU核心执行,这就是通过多线程实现并行。
  4. 多线程实现了并行还是并行?多线程可能被分配到一个CPU内核中执行,也可能被分配到不同CPU执行,分配过程是操作系统所为,所以,两者都实现了。

参考以下资料:

https://blog.csdn.net/qq_33290787/article/details/51790605
https://www.cnblogs.com/bughui/p/7422214.html
https://www.jianshu.com/p/50fffbf21b39

猜你喜欢

转载自my.oschina.net/u/2393003/blog/1818314
今日推荐