改变线程优先级:
(1)每个线程执行时都具有一定的优先级,优先级高的获得较多的执行机会,优先级低的线程则获得较少的执行机会。
(2)每个线程的优先级都与创建它的父线程优先级相同,在默认情况下,main线程具有普通优先级,而main线程创建的子线程也具有普通优先级。
(3)Thread提供了setPriority(int newPriority ) getPriority()方法来设置和返回指定线程的优先级,其中setPriority()方法的参数可以是一个整数,范围是0-10,之间,也可以使用Thread类的如下三个常量:
MAX_PRIORITY 其值是10
MIN_PRIORITY 其值是1
NORM_PRIORITY 其值是5
程序实例:使用setPriority()方法来改变主线程的优先级,并使用该方法改变了两个线程的优先级,从而看到优先级高德线程获得更多的执行机会。
改变线程优先级:
(1)每个线程执行时都具有一定的优先级,优先级高的获得较多的执行机会,优先级低的线程则获得较少的执行机会。
(2)每个线程的优先级都与创建它的父线程优先级相同,在默认情况下,main线程具有普通优先级,而main线程创建的子线程也具有普通优先级。
(3)Thread提供了setPriority(int newPriority ) getPriority()方法来设置和返回指定线程的优先级,其中setPriority()方法的参数可以是一个整数,范围是0-10,之间,也可以使用Thread类的如下三个常量:
MAX_PRIORITY 其值是10
MIN_PRIORITY 其值是1
NORM_PRIORITY 其值是5
程序实例:使用setPriority()方法来改变主线程的优先级,并使用该方法改变了两个线程的优先级,从而看到优先级高德线程获得更多的执行机会。
public class PriorityTest extends Thread {
//定义一个带参数的构造器,用于指定线的name
public PriorityTest(String name){
super(name);
}
public void run(){
for (int i = 0; i < 50; i++) {
System.out.println(getName()+",其优先级是:"+ getPriority()+",循环变量的值为:"+i);
}
}
public static void main(String[] args) {
//改变主线程的优先级
Thread.currentThread().setPriority(6);
for (int i = 0; i < 30; i++) {
if(i==10){
PriorityTest low =new PriorityTest("低级");
low.start();
System.out.println("创建之初的优先级:"+low.getPriority());
//设置该线程为最低优先级
low.setPriority(MIN_PRIORITY);
}
if(i==20){
PriorityTest high=new PriorityTest("高级");
high.start();
System.out.println("创建之初的优先级:"+high.getPriority());
//设置该线程为最高优先级
high.setPriority(MAX_PRIORITY);
}
}
}
}