- JAVA中有一个叫“线程调度器”的东东,用于监控程序启动后,已进入【就绪状态】的所有线程(也就是已调用start的子线程及主线程)。
- 线程调度器 按照 优先级 来决定调度哪个线程来执行,但并不是说优先级高的就一定能被先执行,只能说优先级高的,其被执行的权重就大。
(类似于你有1万张彩票,你哥们儿只有1张彩票。只能说你中奖的概率和权重变大了,但并不等于说你这1万张彩票一定会中奖,也有可能你这1张的哥们儿中了,但你没中)
- 线程优先级不是靠嘴说说的,而是需要正儿八经用数字来说话!
线程的优先级用数字表示,范围为1~10,数字越大,优先级越高。
Thread.MIN_PRIORITY = 1;
Thread.MAX_PRIORITY = 10;
Thread.NORMAL_PRIORITY = 5;
- 整半天了,那到底用哪个函数来 获取 或 设定 线程优先级呢?
线程优先级获取:getPriority()
线程优先级设定:setPriority(int value)
- 注意:
1、不认为设定线程调度优先级时,线程默认优先级为5;
2、一定一定要先设定完线程的调度优先级后,才能启动线程!!!
3、性能倒置:优先级小的线程反而先执行,就叫做性能倒置。
4、再啰嗦一句,调度优先级高的线程,并不一定会优先被执行!!!
5、若设定的调度优先级不在[1, 10]中,则会抛出 java.lang.IllegalArgumentException 异常
// 线程调度优先级
public class ThreadPriority implements Runnable{
@Override
public void run() {
// 线程名(优先级)--->运行
System.out.p

本文介绍了JAVA中的线程调度器如何根据优先级决定执行顺序。线程优先级从1到10,数字越大,优先级越高。通过getPriority()获取优先级,setPriority(int value)设定优先级。注意设定优先级需在启动线程之前,且优先级高并不保证先执行,可能出现性能倒置现象。非法的优先级设定会导致异常。
最低0.47元/天 解锁文章
683

被折叠的 条评论
为什么被折叠?



