一.线程调度
线程有两种调度模型
1.分时调度模型: 所有线程轮流使用CPU使用权
2.抢占式调度模型:优先让优先级高的线程使用CUP(如果优先级相同则会随机选一个)
Java使用的是抢占式调度模型
多线程是随机性的,因为谁能抢到CPU使用权都是不一定的
那么,我们可以修改线程的优先级吗?答案肯定是可以
Thread类中有两个方法用来设置和获取线程优先级的方法:
1.public final int getPriority(): 返回此线程的优先级
2.public final void setPriority(int newPriority) :更改此线程的优先级
注意:
1.线程优先级高仅仅是表示线程获取CPU时间片的几率高,而不是线程优先级高的全部执行再到优先级低的
2.线程默认优先级为5 ,优先级的范围在1-10
接下来用代码来展示:
自定义的MyThread 类:
继承了 Thread 并且重写了 run方法
测试类:
控制台输出结果:
可见我们定义的自行车优先级的最低的,大部分都是最后才执行,而少部分在一开始也执行了,说明了多线程的随机性,优先级高只是提高了CUP获取时间片的概率