当可运行状态的线程很多,那么优先极高的线程将会先执行。
线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。
线程还有三个常量,看下面的测试类。
下面弄个小例子。
1.线程类
package com.citi.thread;
public class ThreadTest extends Thread{
public void run(){
System.out.println("Thread Name : " +this.getName() );
}
}
2.测试类:
package com.citi.thread;
public class Test {
public static void main(String[] args){
ThreadTest t1= new ThreadTest();
// t1.setPriority(Thread.MAX_PRIORITY);
t1.start();
ThreadTest t2= new ThreadTest();
// t2.setPriority(Thread.NORM_PRIORITY);
t2.start();
ThreadTest t3= new ThreadTest();
// t3.setPriority(Thread.MIN_PRIORITY);
t3.start();
}
}
如果这么写,那么线程的执行是无序的,也就是JVM想跑哪个跑哪个。
显示的结果可能是:(排列组合,3个线程这里可以显示6种情况)
Thread Name : Thread-0
Thread Name : Thread-2
Thread Name : Thread-1
这里如果给注释部分去掉,那么就是加了优先极了。那么可不可以达到我们的理想效果呢。
Thread Name : Thread-0
Thread Name : Thread-1
Thread Name : Thread-2
测试结果表明多数时候是我们的理想效果,但是也会无序,也就是说线程的优先级并不能保证,优先级高的线程先运行,这要怎么办呢。等以后想到了再写,
实在不行,你可以让不想跑的线程先睡会。