“并行和并发有什么区别?”

对于这个问题,很多工作5年以上的同学都答复不进去。

或者说,本人有肯定的了解,然而不晓得怎么表白。

大家好,我是Mic,一个工作了14年的Java程序员。

对于这个问题,面试官想考查什么呢?

问题解析

并行和并发最早其实形容的是Java并发编程外面的概念。

他们强调的是CPU解决工作的能力。

简略来说,并发,就是同一个时刻,CPU可能解决的工作数量,并且对于应用程序来说,不会呈现卡顿景象。

并行,就是同一个时刻,容许多个工作同时执行,在多核CPU架构中,同时执行的工作数量是由外围数决定的,比方在4核4线程的CPU中,只能同时执行4个线程。

这两个概念看起来相似,但其实形容的纬度是不同的,并发形容的是程序处理能力的视角

并行形容的是CPU解决工作形式的视角,一个是宏观层面,一个是宏观层面。

他们两个又是相辅相成的,CPU并行执行工作的能力,又能晋升程序的并发解决性能。

所以多核CPU的性能要比单核CPU好。

当然,如果是单核CPU,也能够通过工夫片切换的形式晋升并发能力。

Erlang之父Joe Armstrong用了一张图片解释了并行和并发的区别。

并发就是两个队列交替应用一台咖啡机,并行是两个队列同时应用两台咖啡机。

所以,在我看来,这个面试题能够很好的考查求职者Java并发编程的了解水平。

网上有很多的文章都在尝试解释这个概念,然而这些解释反而让这个问题越来越简单。

我认为只有对线程的底层原理有深度了解,能力很好的答复这个问题。

高手:

并行和并发是Java并发编程外面的概念。

并行,是指在多核CPU架构下,同一时刻同时能够执行多个线程的能力。

在单核CPU架构中,同一时刻只能运行一个线程。

在4核4线程的CPU架构中,同一时刻能够运行4个线程,那这4个线程就是并行执行的。

并发,是指在同一时刻CPU可能解决的工作数量,也能够了解成CPU的并发能力。

在单核CPU架构中,操作系统通过CPU工夫片机制晋升CPU的并发能力

在多核CPU架构中,基于工作的并行执行能力以及CPU工夫片切换的能力来晋升CPU的并发能力。

所以,总的来说,并发是一个宏观概念,它指的是CPU可能承载的压力大小,并行是一个宏观概念,它形容CPU同时执行多个工作的能力。

总结

好了,明天的分享就到这里完结了

如果喜爱我的作品,记得点赞、珍藏、关注

须要Java面试题合集扫描下方

版权申明:本博客所有文章除特地申明外,均采纳 CC BY-NC-SA 4.0 许可协定。转载请注明来自 Mic带你学架构
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!