线程的基础知识

线程的基础知识之并行与并发的区别:

引言:在计算机科学中,并行和并发是两个经常被提及但容易混淆的概念。本文将通过解释它们在单核和多核CPU下的工作方式,帮助读者更好地理解这两者之间的区别。

学习内容:

例如:

  1. 线程与进程的区别
  2. 并行与并发的区别
  3. 线程创建的方式有哪些
  4. runnable 和 callable 有什么区别
  5. 线程包括哪些状态,状态之间是如何变化的
  6. 在java中wait和sleep方法的不同
  7. 新建三个线程,如何保证它们按顺序执行
  8. notify( ) 和 notifyAll( ) 有什么区别
  9. 线程的 run( ) 和 start( ) 有什么区别
  10. 如何停止一个正在运行的线程
  • 并行与并发的区别

并行与并发的区别:

提示:并行和并发分为两种情况单核CUP和多核CUP

一、单核CPU下的并发

  • 在单核CPU下,尽管操作系统可以创建多个线程,但实际上这些线程并不是同时执行的。

  • 由于只有一个核心来处理任务,因此线程之间需要共享CPU时间片。

  • 看下图 ,下面有三个线程,没给线程多分配了不同的时间片,它不能去同时执行下面三个线程
    在这里插入图片描述

  • 执行下个如下,先执行线程1
    在这里插入图片描述

  • 在执行线程2

在这里插入图片描述

  • 然后执行线程3
    在这里插入图片描述

  • 上述是简单描述,不见得是先线程1、线程2、然后线程3,但只能它没一个时间片只能有一个线程被执行

  • 操作系统中有一个组件叫做任务调度器,将 cpu 的时间片 ( windows下时间片最小约为 15 毫秒 ) 分给不同的程序使用,只是由于 cpu 在线程间 ( 时间片很短 ) 的切换非常快,人类感觉是同时运行的

  • 总结为一句话就是:微观串行,宏观并行

  • 一般会将这种线程轮流使用 CPU 的做法称为并发 ( concurrent )

这个就是单核 CUP 下并行和并发的情况


二、多核CPU下的并行

  • 与单核CPU不同,多核CPU拥有多个核心,每个核心都可以独立地执行线程。这意味着在多核CPU下,线程可以实现真正的并行处理。当系统中有多个线程需要执行时,每个核心可以分别调度和执行一个线程,从而实现多个线程在同一时间内同时执行的效果。
  • 例如,考虑一个具有两个核心和四个线程的系统。

在这里插入图片描述
在这里插入图片描述

  • 在时间片1中,核心1可以执行线程1,而核心2可以执行线程2。这样,线程1和线程2在同一时间内并行运行。
    在这里插入图片描述

  • 同样地,在下一个时间片中,核心1和核心2可以分别执行线程3和线程4(或任何其他组合)。通过这种方式,多核CPU能够显著提高处理大量并行任务的能力。
    在这里插入图片描述

  • 需要注意的是,并行(Parallel)是指系统能够同时执行多个任务的能力,这通常需要在多核CPU或分布式系统中才能实现。而并发则更注重于系统能够同时处理多个任务的能力,尽管这些任务在单核CPU上实际上是交替执行的。但在多核CPU下,并发和并行可以同时实现,因为每个核心都可以独立地执行线程。


总结:

  • 并发(concurrent) 是同一时间应对(dealing with)多件事情的能力
  • 并行(parallel) 是同一时间动手做 (doing)多件事情的能力

本文通过解释并行和并发在单核和多核CPU下的工作方式,帮助读者更好地理解这两者之间的区别。在单核CPU下,尽管可以创建多个线程,但实际上它们是交替执行的(微观串行),从而实现一种并发的效果。而在多核CPU下,每个核心都可以独立地执行线程,从而实现真正的并行处理。了解这些概念对于理解和优化多线程应用程序的性能至关重要。

  • 38
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值