java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定调度哪个线程来执行。
优先级低只是意味着获得调度的概率低,并不是优先级低就不会被调用了。同时并不是所有优先级高的都必须先执行,只是它先执行的概率高了,(比如我买了10000张彩票,你买了1张彩票,我中奖的概率更大而已)。这都是看CPU的调度(看CPU的心情)。
线程的优先级用数字表示,范围从1~10
Thread.MIN_PRIORITY = 1;
Thread.MAX_PRIORITY = 10;
Thread.NORM_PRIORITY = 5;
使用以下方式改变获取优先级: getPriority() . setPriority(int x)
线程优先级在1-10,不在这个范围会报错.
以下是setPriority()的源代码:
代码演示:
//先设置优先级
t1.start(); //默认优先级
t2.setPriority(1); //优先级为1
t2.start();
t3.setPriority(4); //优先级为4
t3.start();
t4.setPriority(Thread.MAX_PRIORITY); //.MAX_PRIORITY = 10
t4.start();
t5.setPriority(-1); // 应在1~10,这里设置-1会报错。
t5.start();
t6.setPriority(11); // 应在1~10,这里设置11会报错。
t6.start();
运行结果: