Thread 多线程问题

Thread 多线程问题

老师 继承Thread 类实现run 方法,启动多个线程后,这个几个线程是并发还是并行啊?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小脸 2022-11-24 18:34:14

同学你好,是并发,这里同学也可参考如下解析进行理解:

并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。如:打游戏和听音乐两件事情在同一个时间段内都是在同一台电脑上完成了从开始到结束的动作。那么,就可以说听音乐和打游戏是并发的。

并行:当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

祝学习愉快~

  • 提问者 慕无忌4072121 #1

    并行是不是 cpu 时间片分1毫秒给A线程,1毫米执行完后再分一毫秒给B线程,由于时间短所以看上去像并行


    并发是cpu 分配一毫秒,在这一毫秒内A 线程和B线程同时运行,这叫并行,老师我的理解没有问题吧

    2022-11-24 21:00:37
  • 好帮手慕小脸 回复 提问者 慕无忌4072121 #2

    同学你好,理解有点小问题,两者对比是有前提条件的,并发是指一个处理器同时处理多个任务。
    并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
    简单理解:并发是一个人同时吃三个馒头,而并行是三个人同时吃三个馒头

    祝学习愉快~

    2022-11-25 09:43:41
  • 提问者 慕无忌4072121 回复 好帮手慕小脸 #3

    是不是看cpu 核数,如果单核处理多个线程任务就是并发,因为单核一次只能执行一个线程任务,所以cpu 会分配时间片,例如有三个线程,单核cpu 第一次分十纳秒给第一个线程,第一个线程跑完,cpu 再分十纳秒给第二个线程以此类推,直到所有线程都跑完,由于分配时间片执行很多,所以人眼看上去感觉像同时跑


    而并行则是在多核cpu情况下,例如四核cpu 处理四个线程,系统会将每一个线程绑定一个核,然后同时执行线程而这时则是并行跑了,老师我这样理解没问题了吧



    如果上面我理解正确,第二个问题如果四核cpu 处理大于核数的线程,那么是不是并发和并行就会同时存在?

    第三个问题是,runnable,和Thread 类 是并发还是并行则要看你硬件cpu 是多核还是单核,如果是多核处理小于核数的线程量则是并行,如果是cpu是单核则是并发,如果是线程大于cpu核数,系统会先将cpu核数同时对应相等核数的线程量,只要其中某个线程执行完则立马将时间片分给另外一个线程

    2022-11-25 12:35:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师