线程的优先级
每个线程都有优先级,最高是10,最低是1,默认为5。
修改优先级:void setPriority(int num);
读优先级:int getPriority();
均分式调度模型:
平均分配cpu时间片,每个线程占有的cpu时间片时间长度相同。
抢占式调度模型:
关于线程这么重要的知识我听了两个老师的网课,只有一个提到了,java是抢占式调度模型,他说,哪个线程的优先级比较高,抢到cpu时间片的概率就会高一些或者说大一些。感觉说的有些笼统,我就去网上查,得到了这样的说法:
java虚拟机采用抢占式调度模型,是指优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那么就随机选择一个线程,使其占用CPU。处于运行状态的线程会一直运行,直至它不得不放弃CPU。一个线程会因为以下原因而放弃CPU。一, java虚拟机让当前线程暂时放弃CPU,转到就绪状态,使其它线程或者运行机会。二,当前线程因为某些原因而进入阻塞状态。三,线程结束运行。
"处于运行状态的线程会一直运行,直至它不得不放弃CPU。"这句话困扰了我,线程不是都是抢夺时间片的吗,优先级高的优先抢夺我可以理解,于是乎,我做了个实验。
public class Test {
public static void main(String[] args) {
new Thread