JUC学习-3-浅谈并发、并行、串行的理解

JUC学习-3-浅谈并发、并行、串行的理解

一、并发:(在有限时间内 尽快处理所有用户请求)

通俗易懂的讲:

以上饭店餐厅吃饭为例。饭店同时来了3位客人,但是只有一位厨师。为了让每个客人可以拥有友好的体验,会选择给每位客人轮流上菜,(就比如先给第一位客人上帝王蟹 以后 给第二位客人上红烧肉 再给第三位客人上大乱炖,再回到第一位客人 上生鱼片...)这样就不会造成如果第一位客人点了“满汉全席”导致其余客人一直处于等待中的这种场景。

image

从操作系统角度讲:

以线程为单位,先执行QQ进程中的某些线程中的几条指令以后,再快速切换到Wechat进程执行几条指令,再切换到Java...

并发是指同一时间段内 宏观上有多个程序同时运行,这在单CPU系统中,每一时刻只能有一道程序执行,即微观上这些程序是分时的 交替运行的 。只不过给人的感觉是同时运行的,那是因为分时交替的时间非常短。

image

二、并行:

通俗易懂的讲:

还是以上饭店吃饭为例,饭店同时来了三位顾客,此时有三位厨师,可以一对一的为三位顾客服务。

image

从操作系统角度讲:

多核CPU,三个线程同时进来,每一个核心分别负责不同的线程。就是一个并行的操作。

如果线程数量 > 线程核心数 就还是会出现并发情况

image

三、串行:

通俗易懂的讲:

按照客户的下单顺序,先到先得。厨师按照顺序炒菜,但是后面的客户就会等待时间比较久

image

从操作系统角度讲:

如果是单核CPU,同一时刻只能运行一个程序,如果存在多个程序,需要按照先后顺序执行。我打开qq以后,不能再同时打开微信,只能等待qq执行完成以后(关闭)后才能打开微信。线程的串行操作亦是如此,一次只能执行一个线程代码指令,其他线程需要等待排队。

image

四、综合来说:

并发Concurrent:指应用能够交替执行不同的任务,比如单核CPU下执行多线程,并非是 同时执行多个任务,如果开两个线程执行,就是在人几乎不可能察觉到的速度不断去切换这两个任务,以达到"同时执行"的效果,其实并不是的,只是计算机的速度太快了,我们无法察觉到而已。

并行Paraller:指应用能供同时执行不同的任务。

两者区别,一个是交替执行,一个是同时执行

posted @ 2025-06-19 10:14  skystrivegao  阅读(29)  评论(0)    收藏  举报