Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。 线程的优先级用数据表示,范围从1~10 Thread.MIN_PRIORITY = 1; Thread.MAX_PRIORITY = 10; Thread.NORM_PRIORITY = 5; 使用以下方式改变或获取优先级 getPriority() setPriority(int xx) 优先级低只是意味着获得调度的概率低,并不是优先级低就不会被调用了,这都是看CPU的调度。
package com.haohao.test;
/**
* @author zhh
* @description 测试线程的优先级
* @date 2020/9/16
*/
public class TestPriority {
public static void main(String[] args) {
MyPriority priority = new MyPriority();
Thread thread0 = new Thread(priority, "thread0");
Thread thread1 = new Thread(priority, "thread1");
Thread thread2 = new Thread(priority, "thread2");
Thread thread3 = new Thread(priority, "thread3");
Thread thread4 = new Thread(priority, "thread4");
thread0.start();
// 一定要先设置优先级,然后再启动start()
thread1.setPriority(1);// 设置优先级
thread1.start();
thread2.setPriority(4);// 设置优先级
thread2.start();
thread3.setPriority(Thread.MAX_PRIORITY);// 设置优先级为最大
thread3.start();
thread4.start();
// 主线程的优先级
System.out.println(Thread.currentThread().getName() + "的优先级--->" + Thread.currentThread().getPriority());
}
static class MyPriority implements Runnable {
@Override
public void run() {
// 子线程的优先级
System.out.println(Thread.currentThread().getName() + "的优先级" + Thread.currentThread().getPriority());
}
}
}
输出结果:
main的优先级--->5
thread0的优先级5
thread3的优先级10
thread4的优先级5
thread2的优先级4
thread1的优先级1