"并行和并发有什么区别?"关于这个问题,很多工作5年以上的同学都答不上来。换句话说,我有一定的了解,但我不知道如何表达。大家好,我是Mic,一名拥有14年经验的Java程序员。关于这个问题,面试官想调查什么?问题分析并行和并发其实是Java并发编程中最早描述的概念。他们强调的是CPU处理任务的能力。简单来说,并发就是CPU可以同时处理的任务数,对于应用来说,不会有卡顿。并行意味着允许多个任务同时执行。在多核CPU架构中,同时执行的任务数由核数决定。比如4核4线程的CPU,同时只能执行4个线程。这两个概念看似相似,其实是在不同的纬度上描述的。并发描述了程序处理能力的角度。并行描述了CPU处理任务的角度。一个是宏观层面,一个是微观层面。他们两个相得益彰。CPU并行执行任务的能力也可以提高程序的并发处理性能。所以多核CPU的性能要优于单核CPU。当然,如果是单核CPU,也可以通过时间片切换来提高并发能力。Erlang之父JoeArmstrong用一张图解释了并行和并发的区别。并发是指两个队列交替使用一台咖啡机,并行是指两个队列同时使用两台咖啡机。因此,在我看来,这道面试题可以很好地检验求职者对Java并发编程的理解程度。网上有很多文章试图解释这个概念,但是这些解释让这个问题变得越来越复杂。我觉得这个问题只有深刻理解线程的底层原理才能很好的回答。Master:并行和并发是Java并发编程中的概念。并行性是指在多核CPU架构下同时执行多个线程的能力。在单核CPU架构中,一次只能运行一个线程。在4核4线程的CPU架构中,可以同时运行4个线程,这4个线程是并行执行的。并发是指CPU同时处理的任务数,也可以理解为CPU的并发能力。在单核CPU架构中,操作系统通过CPU时间片机制来提高CPU的并发能力。在多核CPU架构中,利用任务的并行执行能力和CPU时间片切换能力来提高CPU的并发能力。所以,一般来说,并发是一个宏观的概念,指的是CPU能够承受的压力大小,而并行是一个微观的概念,描述的是CPU同时执行多个任务的能力。综上所述,今天的分享就到这里了。喜欢我的作品记得点赞、收藏、关注哦。需要Java面试题集扫描下方版权声明:本博客所有文章除特别注明外均为CCBY-NC。-SA4.0许可协议。转载请注明来自Mic带你学建筑!如果本文对您有帮助,请给个关注和点赞。您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!
