在操作系统中,优先级越高的线程,其任务会优先被CPU执行
在Java中使用setPriority()来设置线程优先级,优先级分为[1,2…9,10]十个等级,超出此范围则会抛出异常
线程优先级能“继承”
// 测试1
System.out.println("main begin:" + Thread.currentThread().getPriority());
System.out.println("main end:" + Thread.currentThread().getPriority());
Thread1a thread1a = new Thread1a();
thread1a.start();
// 测试2
System.out.println("main begin:" + Thread.currentThread().getPriority());
Thread.currentThread().setPriority(6);
System.out.println("main end:" + Thread.currentThread().getPriority());
Thread1a thread1a = new Thread1a();
thread1a.start();
package com.myThread;
public class Thread1a extends Thread {
@Override
public void run() {
super.run();
System.out.println("Thread1a:"+this.currentThread().getPriority());
Thread1b thread1b=new Thread1b();
thread1b.start();
}
}
package com.myThread;
public class Thread1b extends Thread {
@Override
public void run() {
super.run();
System.out.println("Thread1b:"+this.currentThread().getPriority());
}
}
测试1打印结果
main begin:5
main end:5
Thread1a:5
Thread1b:5
测试2打印结果
main begin:5
main end:6
Thread1a:6
Thread1b:6
优先级规则
优先级与调用线程的先后顺序无关
优先级高只是代表获取资源多,不代表一定先完成,因为线程是随机执行的