位置:首页 > Java > 线程优先级设置与调度机制详解

线程优先级设置与调度机制详解

时间:2026-08-15  |  作者:冻月看渠  |  阅读:0

线程优先级的基本概念

在应用程序中,如果要对线程进行调度,最直接的方式就是设置线程的优先级。

优先级越高的线程,获得CPU执行的机会越大;优先级越低的线程,获得CPU执行的机会越小。

线程的优先级用1~10之间的整数来表示,数字越大,优先级越高。除了可以直接使用数字表示线程的优先级,还可以使用Thread类中提供的三个静态常量表示线程的优先级,如表1所示。

表1 Thread类的优先级常量

Thread**类的静态常量** 功能描述
static int MAX_PRIORITY 表示线程的最高优先级,相当于值10
static int MIN_PRIORITY 表示线程的最低优先级,相当于值1
static int NORM_PRIORIY 表示线程的普通优先级,相当于值5

线程优先级的设置方式

程序运行时,凡是处在就绪状态的线程,都会对应一个自己的优先级。比如 main 线程,默认就是普通优先级。

当然,这个优先级并不是一成不变的,完全可以通过 Thread 类的 setPriority(int newPriority) 方法重新设置。

这里的参数 newPriority 可以传入 1~10 之间的整数,也可以直接使用 Thread 类提供的三个静态常量。

案例:不同优先级线程的运行情况

下面结合一个案例,具体看看两个不同优先级的线程在程序里究竟是怎样运行的,如文件1所示。

文件1 Example07.ja va

 1    public class Example07 {
 2        public static void main(String[] args) {
 3            // 分别创建两个Thread线程对象
 4            Thread thread1 = new Thread(() -> {
 5                for (int i = 0; i < 10; i++) {
 6                    System.out.println(Thread.currentThread().getName()
 7                                         + "正在输出i:" + i);
 8                }
 9            },"优先级较低的线程");
 10            
 11            Thread thread2 = new Thread(() -> {
 12                for (int j = 0; j < 10; j++) {
 13                    System.out.println(Thread.currentThread().getName()
 14                                         + "正在输出j:" + j);
 15                }
 16            },"优先级较高的线程");
 17            // 分别设置线程的优先级
 18            thread1.setPriority(Thread.MIN_PRIORITY); 
 19            thread2.setPriority(10); 
 20            // 开启两个线程 
 21            thread1.start();
 22            thread2.start();
 23        }
 24    }

运行结果如图1所示。

线程优先级设置与调度机制详解_wishdown.com

图1 运行结果

运行结果分析

文件1中,创建了两个线程thread1和thread2,分别将线程的优先级设置为1和10。

从图1可以看出,优先级较高的thread2线程会获得更多的机会优先执行。

使用线程优先级时的注意事项

要特别留意这一点:Ja va虽然定义了10个线程优先级,但这些优先级最终能否发挥作用,还得看操作系统是否支持。

不同操作系统对优先级的处理方式并不一致,很难和Ja va里的线程优先级做到一一对应。

也正因为如此,设计多线程应用时,功能实现绝不能建立在线程优先级之上;线程优先级更适合被当作一种优化程序执行效率的辅助手段,而不是功能正确性的前提。

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多