Java中setPriority()用于设置线程优先级,取值范围1-10,默认为5,通过Thread类调用,如thread.setPriority(8),但实际调度受操作系统影响,不保证执行顺序,仅作提示。

Java 中的 setPriority() 方法用于设置线程的优先级,它定义在 Thread 类中。通过调整线程优先级,可以影响线程调度器对线程执行顺序的决策,但不能保证绝对的执行顺序。
线程优先级取值范围
Java 线程优先级是一个整数,取值范围从 1 到 10:
- 1:最低优先级(Thread.MIN_PRIORITY)
- 5:默认优先级(Thread.NORM_PRIORITY)
- 10:最高优先级(Thread.MAX_PRIORITY)
创建线程时,如果没有显式设置优先级,它会继承创建它的父线程的优先级。
如何使用 setPriority()
调用线程对象的 setPriority(int priority) 方法即可设置优先级。示例代码如下:
立即学习“Java免费学习笔记(深入)”;
weiit-saas是一款Java开源项目,由weiit团队自研,意在通过技术封装,帮助企业一键生成小程序、公众号,让企业拥有独立品牌的自营商城。weiit-saas是完全开源电商SaaS系统,属于weiit开源的社区版,旧版已不在维护和更新,仅供学习和参考,新版saas从底层架构到前后端UI设计已经全面优化和升级。 主要特点1、项目采用Spring+SpringMVC+Mybatis主流开源框架
Thread thread = new Thread(() -> {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + ": 执行任务 " + i);
}
});
thread.setPriority(8); // 设置较高优先级
thread.start();
也可以在主线程中修改优先级:
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
注意事项与实际效果
尽管设置了优先级,但线程调度依赖于底层操作系统,因此:
- 不同 JVM 或操作系统对优先级的支持可能不同,部分系统会忽略 Java 的优先级设置
- 高优先级线程通常更可能被优先调度,但不保证一定先运行
- 不要依赖优先级来控制程序逻辑的正确性,它仅是提示(hint)
- 设置超出 1~10 范围的优先级会抛出 IllegalArgumentException
查看当前线程优先级
可通过 getPriority() 方法获取线程当前优先级:
System.out.println("主线程优先级:" + Thread.currentThread().getPriority());
System.out.println("新线程优先级:" + thread.getPriority());
基本上就这些。setPriority() 是一个简单的提示机制,合理使用有助于优化资源调度,但不应作为并发控制的核心手段。










