关注△mikechen的架构笔记△,十余年BAT架构经验倾囊相授
大家好,我是mikechen。
大型架构经常会涉及到:并发和并行,很多同学不太清楚两者的实现和区别,下面我就全面来详解并发和并行@mikechen
最新mikechen原创超30万字《阿里架构师进阶专题合集》和《最全大厂面试题及答案总结》,请关注本公众号【mikechen的架构笔记】,后台回复:资料,即可领取。
并发
并发:是指在同一时间段内,多个任务,比如:任务1、任务2、任务3...等等,可以并发执行。
看着是“并发”,其实,同一时刻只有一个任务在真正运行,只不过任务间快速切换。
如下图所示:
任务在一段时间内被切换、和调度,计算机快速切换上下文,使得这些任务看起来像是同时执行。
并发是通过时间分片机制实现的,通常应用于单核处理器、或有时间片切换的系统中。
比如:单核处理器的多任务操作、操作系统调度线程、异步编程...等等应用场景。
并发类似:红车和蓝车互相超车轮流上,如下图所示:
并发就像在一条单车道上,红车、和蓝车轮流前进,但它们不能同时并排行驶。
每辆车行驶一段距离后让出路给另一辆车,这种情况下,虽然在同一段时间内,两辆车看起来都在向前移动,但实际上它们并不是同时行驶的,而是交替行驶。
并行
并行:是指在同一时刻有多个任务真正同时执行,比如:任务1、任务2...等等,做到真正的并行执行。
如下图所示:
并行,通常依赖于多核处理器、或多台计算机共同工作。
每个任务在不同的核心上并行执行,各自独立运行,互不干扰...,做到真正的并行,而不是上面的“并发”,只是假象。
并行,是真正的同时执行任务,多个任务在同一时刻运行,不需要交替。
并行,就如:红车、和蓝车,就像是互不干扰各行其道。
如下图所示:
并行,就像是红车、和蓝车,在两条不同的车道上同时行驶,互不干扰。
两辆车可以同时前进,各自沿着自己的车道,不需要等待对方。
这对应于计算机中的多核处理器,每个核心可以独立处理一个任务,多个任务可以真正同时执行。
并发则是红车、和蓝车,在同一条车道上轮流前进。
由于车道只有一条,两辆车必须交替行驶,彼此需要等待、和让路,这就像在单核处理器上执行多个任务,任务之间要通过切换来共享处理器的时间。
所以,一句话总结:
并发:是任务在共享资源的情况下轮流执行(就像在单车道上轮流行驶的车)。
并行:是任务各自使用自己的资源同时执行(就像在不同车道上同时行驶的车)。
两者的实现机制不同,但在高层次概念上,目标都是为了提高程序的性能、和吞吐量。
以上
最后送大家一个福利:
送我原创超30万字阿里架构师进阶专题合集。
以及给大家整理最全大厂Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件...等必考题答案详解。
需要以上架构专题&面试答案的同学,加我微信即可领取!
添加时备注:资料