NewAll_ 2022-07-20 14:56 采纳率: 88.9%
浏览 40
已结题

学习时关于Java线程的疑问?

今天看学习视频时关于java线程有疑惑想请教一下大家:
1.对于多核CPU,如果是多进程并行,那对每个进程来说,其中的线程是不是只能并发,不能同时并行。
一个核心只能处理一个任务,多线程并行和多进程并行(不是并发)是不是不能同时存在。
2.优先级高的线程抢占的时间片多,这里的时间片多,指的是抢占到时间片的概率高,还是每次抢占到的时间片的时间长,该线程运行的时间长。
请指点一下,谢谢。

  • 写回答

2条回答 默认 最新

  • 於黾 2022-07-20 15:09
    关注

    1.线程是cpu执行的最小单位,而进程是线程的一个打包,每个进程至少由一个线程组成
    没有人说过cpu一次只能运行同一个进程里的一个线程啊,可以一个进程里的多个线程同时执行的
    而且即使是单核cpu,多线程和单线程效果也完全不一样
    如果你的进程只有一个线程,那你一旦执行了sleep,整个进程都被阻塞了;而如果你开2个线程,cpu就可以分时复用,把sleep的线程丢到后台去,先执行其他的线程
    2.当cpu不繁忙的时候,它就会按顺序调用栈里的线程来执行;
    当cpu变得繁忙了,它会优先调用优先级高的那些线程,忽略优先级低的线程
    也就是概率变高了
    这样在每次抢占时长不变的情况下,总时长是变长了的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月28日
  • 已采纳回答 7月20日
  • 创建了问题 7月20日