当前位置:   article > 正文

JAVA面试系列:你了解并发和并行的区别吗?_并行科技java面经

并行科技java面经

1、背景

面试官问这个,主要想考察 什么是并行? 什么是并发? 你能用生活中的例子举例嘛? 进一步观察候选者是否对并发编程是否思考过等等。要想学问大,就要多读、多抄、多写。

2、解答

2.1、并发

当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状态。这种方式我们称之为并发(Concurrent)。这时的处理逻辑如下图:
在这里插入图片描述

2.2、并行

当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。这时的处理逻辑如下图:
在这里插入图片描述

2.3、并发与并行区别

计算机操作系统中把并行性和并发性明显区分开,主要是从微观的角度来说的,具体是指:

  • 进程的并行性,多处理机的情况下,多个进程同时运行
  • 进程的并发性,单处理机的情况下,多个进程在同一时间间隔交替运行的

进一步解释两者区别:

  • 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生
  • 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件
  • 并发是在一台处理器上“同时“处理多个任务,并行是在多台处理器上同时处理多个任务

由此看来,我们常说的并发编程的目的就很明确,那就是是充分的利用处理器的每一个核,以达到最高的处理性能。

2.4、生活中的例子

例子一:

  • 三个人去饭堂打开水,只有一个水龙头,如果规定只能一个人装完开水再接着一个人打开水,这就说明打开水不支持并发也不支持并行;
  • 三个人去饭堂打开水,只有一个水龙头,如果规定可以交替装开水,这就说明打开水支持并发;
  • 三个人去饭堂打开水,现在有三个水龙头,三个人可以同时一起装开水,这就说明打开水支持并行。

例子二:

  • 一个人,一把锄头,挖一个大坑,需要一个小时;
  • 三个人,一把锄头,挖三个大坑,你挖累了,换我来,挖完耗时需要三个小时,这就是并发;
  • 三个人,三把锄头,挖三个大坑,同时一起挖,挖完耗时需要一个小时,这就是并行。

3、总结

并发和并行,面试中出现的频率还是蛮高的。不管是招聘简历,还是实际工作中,都能看到高并发编程等相关的词汇。学会从日常生活中,工作中,思考并总结,举例子说明相关概念,显得很重要。本文总结了并发与并行的概念,并举例子说明,希望对大家学习有帮助。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号