线程的优先级等级
MAX_PRIORITY:10 最大优先级
MIN_PRIORITY:1 最小优先级
NORM_PRIORITY:5 默认优先级
相关方法
getPriority():返回线程优先级
setPriority(int newPriority):改变线程的优先级
线程优先级的说明:
线程创建时继承父线程的优先级
低优先级只是获得调度的概率低,并非一定是在高优先级线程之后才被调用
※说明:高优先级的线程要抢占低公先级线程cpu的执行权。但是只是从概率上讲,高优先级的线程高概率的情况下被执行。并不意味着只有当高优先级的线程执行完以后,低优先级的线程才执行。
eg:
//①.创建一个继承与Thread的子类
class MyThread extends Thread{
//②.重写run方法
public void run() {
for (int i = 0; i < 100; i++) {
if (i%2==0) {
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
}
}
public class ThreadTest {
public static void main(String[] args) {
//③.创建Thread类的子类的对象
MyThread h1 = new MyThread();
//④.通过此对象调用start方法
h1.start();
//设置分线程的优先级
h1.setPriority(Thread.MAX_PRIORITY);
//设置主线程的优先级
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
for (int i = 0; i < 100; i++) {
if (i%2==0) {
System.out.println(Thread.currentThread().getName()+" "+i);
}
}
}
}
执行结果:
(高优先级的h1并没有优先执行完成)