不同的线程就像是不同的工作小分队,而系统的计算资源就像是工作场所,工作场所一次只能让一个线程来工作,与此同时,其它的线程就需要等待。但是不同的小分队的重要程度不同,就应该分别看待,这就是优先级的设定。Java用setPriority方法来给线程设置优先级, 数字1~10分别代码10个不同的优先级,1的优先级最小,10的优先级最高,如果不设定优先级,则默认的优先级为5。Java还用3个常量分别代表高中低的优先级, 分别是:MAX_PRIORITY, NORM_PRIORITY, MIN_PRIORITY.
下面这个例子展示了如果使用setPriority()方法:
class demothread1 extends Thread{ //线程类demothread1
public void run(){ //run方法,输出a到h的字符
for(char i='a';i<'h';i++){
System.out.print(i);
}
}
}
class demothread2 extends Thread{ //线程类demothread2
public void run(){ //线程类,输出1到9的数字
for(int i=1;i<9;i++){
System.out.print(i);
}
}
}
public class demosetPriority{
public static void main(String[] args){
demothread1 d1 = new demothread1();
demothread2 d2 = new demothread2();
d1.setPriority(1); //设定线程类实例d1的优先级
d2.setPriority(10); //设定线程类实例d2的优先级
d1.start(); //启动d1
d2.start(); //启动d2
System.out.println(); //主线程main中的换行语句
}
}
编译执行之,结果如下:
可见,在设定了优先级之后,优先级高的线程有更高的概率得到优先执行,但是结果也不是一定的。先执行低优先级的线程的时候也有。可见,优先级只是决定执行顺序的一个因素,应该是一个重要因素,但是不绝对。