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