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

本文详细解析了并发和并行的区别,并通过生活中的例子,如多人打水和挖坑,来形象地阐述这两个概念。并发是指在单个CPU上交替执行多个任务,而并行则是在多CPU环境下同时执行多个任务。了解并发和并行对于优化系统性能至关重要,特别是在高并发编程中。
摘要由CSDN通过智能技术生成

1、背景

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

2、解答

2.1、并发

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

2.2、并行

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

2.3、并发与并行区别

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

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

进一步解释两者区别:

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

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

2.4、生活中的例子

例子一:

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

例子二:

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

3、总结

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值