黑马程序员技术交流社区
标题:
线程疑问???
[打印本页]
作者:
HM汪磊
时间:
2013-3-11 19:03
标题:
线程疑问???
本帖最后由 HM汪磊 于 2013-3-12 12:47 编辑
看书时看到一句话:当CPU空闲时,如果就绪队列不空,队列中第一个具有最高优先级别的线程将执行。
一个队列中有若干个线程,比如:线程1,线程2,线程3,线程4。其中线程4优先级最低,线程1优先级最高。
疑问:队列有先进先出的原则, 当CPU空闲时,是先出队列但优先级低的线程4执行,还是后面的优先级高但是后出队列的线程1执行???
作者:
杨玉辉
时间:
2013-3-11 20:57
先进先出指的是优先级相同的情况,同一进程,线程是同步执行过程,线程的优先级别应该相同,不同的也只是cpu的分配执行的多少。因为,在开启线程时,它们共享资源。
要不然就不是同步的线程,容易出现异常。
面对不同程序,优先级别不同时,这两个线程会同时抢夺cpu执行权吧,没法比较,就没有先后之分。
作者:
付玉光
时间:
2013-3-11 23:27
{:soso_e100:}
好,就让我来回答一下你的这个问题吧。
答:当CPU空闲时,就绪队列不为空(线程等候室不为空),严格意义上讲:
由于CPU的调度具有随机性,线程等候室中的每个线程都有可能从就绪状态得到
CPU的执行权后过渡到运行状态,优先级高的线程只不过将得到CPU调度的机率大,
但并非一定先运行,但通常情况下CPU会先调度线程等候室中的第一个线程。
这就如同对象调用 Object类中notify方法一样,它会唤醒线程等候室中的其中一个线程,
选择是任意性的(但通常唤醒等候室中的第一个线程)!
作者:
李红志
时间:
2013-3-11 23:45
线程有两种调度模型:分时调度模型和抢占式调度模型。
分时调度模型是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片。
java虚拟机采用抢占式调度模型,是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。处于运行状态的线程会一直运行,直至它不得不放弃CPU。
作者:
陈丽莉
时间:
2013-3-12 12:31
如果觉得几位的回答满意,请将帖子分类改成篇【已解决】~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2