关于java:Java面试面试自閟了工作5年的小伙伴今天面试被吊打问我并行和并发有什么区别

39次阅读

共计 1085 个字符,预计需要花费 3 分钟才能阅读完成。

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

对于这个问题,很多工作 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 带你学架构
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!

正文完
 0