并发和并行区别详解(图文全面总结)

文摘   2024-09-18 12:59   四川  

关注mikechen的架构笔记十余年BAT架构经验倾囊相授


大家好,我是mikechen。

大型架构经常会涉及到:并发和并行,很多同学不太清楚两者的实现和区别,下面我就全面来详解并发和并行@mikechen


最新mikechen原创超30万字《阿里架构师进阶专题合集》和《最全大厂面试题及答案总结》,请关注本公众号【mikechen的架构笔记】,后台回复:资料,即可领取。


并发

并发:是指在同一时间段内,多个任务,比如:任务1、任务2、任务3...等等,可以并发执行。

看着是“并发”,其实,同一时刻只有一个任务在真正运行,只不过任务间快速切换。

如下图所示:

任务在一段时间内被切换、和调度,计算机快速切换上下文,使得这些任务看起来像是同时执行。

并发是通过时间分片机制实现的,通常应用于单核处理器、或有时间片切换的系统中。

比如:单核处理器的多任务操作、操作系统调度线程、异步编程...等等应用场景。

并发类似:红车和蓝车互相超车轮流上,如下图所示:

并发就像在一条单车道上,红车、和蓝车轮流前进,但它们不能同时并排行驶。

每辆车行驶一段距离后让出路给另一辆车,这种情况下,虽然在同一段时间内,两辆车看起来都在向前移动,但实际上它们并不是同时行驶的,而是交替行驶。

并行

并行:是指在同一时刻有多个任务真正同时执行,比如:任务1、任务2...等等,做到真正的并行执行。

如下图所示:

并行,通常依赖于多核处理器、或多台计算机共同工作。

每个任务在不同的核心上并行执行,各自独立运行,互不干扰...,做到真正的并行,而不是上面的“并发”,只是假象。

并行,是真正的同时执行任务,多个任务在同一时刻运行,不需要交替。

并行,就如:红车、和蓝车,就像是互不干扰各行其道。

如下图所示:

并行,就像是红车、和蓝车,在两条不同的车道上同时行驶,互不干扰。

两辆车可以同时前进,各自沿着自己的车道,不需要等待对方。

这对应于计算机中的多核处理器,每个核心可以独立处理一个任务,多个任务可以真正同时执行。

并发则是红车、和蓝车,在同一条车道上轮流前进。

由于车道只有一条,两辆车必须交替行驶,彼此需要等待、和让路,这就像在单核处理器上执行多个任务,任务之间要通过切换来共享处理器的时间。

所以,一句话总结:

并发:是任务在共享资源的情况下轮流执行(就像在单车道上轮流行驶的车)。

并行:是任务各自使用自己的资源同时执行(就像在不同车道上同时行驶的车)。

两者的实现机制不同,但在高层次概念上,目标都是为了提高程序的性能、和吞吐量。

以上


最后送大家一个福利:

送我原创超30万字阿里架构师进阶专题合集


以及给大家整理最全大厂Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件...等必考题答案详解。


需要以上架构专题&面试答案的同学,加我微信即可领取!


添加时备注:资料






mikechen的架构笔记
十余年BAT架构经验倾囊相授!
 最新文章