线程的优先级,顾名思义,表示线程执行的先后顺序,在程序中可以通过setPriority()来设置,有1-10个等级,10为最高级,默认为5。
public class TestThread implements Runnable{
private static boolean go=true; 设置一个静态量用于停止线程
private int k=0; 设置一个int 观察线程的执行
@Override
public void run() {
while (go){
k++;
System.out.println( Thread.currentThread()+"---"+k);
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//开始执行
public static void main(String[] args) {
Thread thread1=new Thread(new TestThread());
thread1.setPriority(1); 第一个线程优先级设置为1,
Thread thread10=new Thread(new TestThread());
thread10.setPriority(10); 第二个设置为10
thread1.setName("优先级1"); 随便设置个名字 方便查看
thread10.setName("优先级10");
thread1.start(); 开启线程
thread10.start();
try {
Thread.sleep(30000);
// 在睡眠30000ms后我们停止子线程
go=false;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
看一下运行结果。
可以看到,开始的时候 两个线程执行还是差不多的,所以暂时看不来效果。。。后期效果就出来了,可以看到优先级为10的线程比优先级为1的 多跑了800。
“优先级会被映射到操作系统中线程的优先级,不过,因为操作系统各不相同,不一定都是10个优先级,Java中不同的优先级可能会被映射到操作系统中相同的优先级,另外,优先级对操作系统而言更多的是一种建议和提示,而非强制,简单的说,在编程中,不要过于依赖优先级。 ”
-----java编程的逻辑