JAVA面试系列:你了解并发和并行的区别吗?

JAVA面试系列:你了解并发和并行的区别吗?,第1张

1、背景

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

2、解答 2.1、并发

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

2.2、并行

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

2.3、并发与并行区别

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

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

进一步解释两者区别:

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

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

2.4、生活中的例子

例子一:

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

例子二:

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/905667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存