在 Java 中,线程优先级(Thread Priority)用于“建议”操作系统调度线程时的优先程度,但不保证绝对执行顺序(不同 OS 调度策略不同)。
Java 中线程优先级用 1 ~ 10 的整数表示:
Thread.MIN_PRIORITY // 1
Thread.NORM_PRIORITY // 5(默认)
Thread.MAX_PRIORITY // 10
Thread t = new Thread(() -> {
System.out.println("运行线程");
});
t.setPriority(Thread.MAX_PRIORITY);
t.start();
// 新线程默认继承创建它的线程优先级
Thread t2 = new Thread(() -> {});
System.out.println(t2.getPriority()); // 通常是 5
int p = Thread.currentThread().getPriority();
System.out.println(p);
Runnable r = () -> {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName());
}
};
Thread low = new Thread(r, "低优先级");
Thread high = new Thread(r, "高优先级");
low.setPriority(Thread.MIN_PRIORITY);
high.setPriority(Thread.MAX_PRIORITY);
low.start();
high.start();
⚠️ 结果不一定总是“高优先级先跑完”,只是更可能被优先调度。
❌ 错误用法:
// 指望高优先级一定先执行完
✅ 正确做法:
join()wait/notifyLock| 需求 | 推荐方式 |
|---|---|
| 顺序执行 | join() |
| 资源同步 | synchronized / ReentrantLock |
| 任务调度 | 线程池(ExecutorService) |
| 并发控制 | CountDownLatch / Semaphore |
Java 线程优先级只是“软提示”,可用于微调性能,但不能用于控制执行顺序。
如果你愿意,我也可以给你讲:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。