线程优先级

Posted xm970829

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程优先级相关的知识,希望对你有一定的参考价值。

线程优先级,这是在我学习线程的时候有点疑惑的地方,今天记录一下。
先上代码:
技术图片
执行结果(注意,每次执行的结果几乎都会与上次不一样):
技术图片

恩?这就很意外了呀?为啥?我明明设置了thread3线程优先级最高呀,为啥是第二个执行的,而thread1的优先级却只有1而是最高执行的?
原来在线程中有一个很重要的东西——时间片,什么是时间片?众所周知的,线程有5个状态:创建、就绪、运行、阻塞、死亡。
在这5个状态里,就绪状态就是线程调用了start方法之后。那么怎么从就绪状态到达运行状态呢?这里引入一个cpu调度的概念。cpu调度是随机的,cpu调度线程也是给线程分配时间片。虽然线程的调度是随机的,但是总得有个概率吧?没错,线程的优先级就是指线程得到cpu调度的概率,也就是获得运行所需的时间片的概率。而并不是指高优先级的线程一定比低优先级更早执行。

以上是关于线程优先级的主要内容,如果未能解决你的问题,请参考以下文章

Android 设置线程优先级

Java - 线程优先级和守护线程

线程优先级

多线程-3

如何设置线程优先级 delphi

Java 多线程基础线程优先级和守护线程