【Java面试】面试自閟了!工作5年的小伙伴今天面试被吊打问我,并行和并发有什么区别?

本文由有着14年经验的Java程序员Mic分享,解释了并行和并发的区别。并行强调多核CPU同时执行任务的能力,而并发关注的是CPU处理任务的数量,即使在单核CPU中也可通过时间片切换实现。并发是一个宏观概念,描述CPU承载压力,而并行是微观层面,描述执行任务的能力。理解线程底层原理是关键。
摘要由CSDN通过智能技术生成

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

关于这个问题,很多工作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面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新180期,总计超过15W字!

【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】

需要高手面试文档面试文档的小伙伴可以扫描下方二维码
↓↓↓↓↓↓↓↓↓↓↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跟着Mic学架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值