搜索
写经验 领红包

并发跟并行(并发与并行的区别是什么并举例说明)

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

1、背景

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

2、解答

2.1、并发

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

2.2、并行

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

2.3、并发与并行区别

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

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

进一步解释两者的区别:

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

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

2.4、生活中的例子

例子一:

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

例子二:

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

3、总结

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

免责声明:本站部份内容由优秀作者和原创用户编辑投稿,本站仅提供存储服务,不拥有所有权,不承担法律责任。若涉嫌侵权/违法的,请反馈,一经查实立刻删除内容。本文内容由快快网络小樊创作整理编辑!