多线程运行时需要定义线程运行的先后顺序。
线程优先级是用数字表示,数字越大线程优先级越高,取值在1到10,默认优先级为5。
实例:
package com.bijian.study;
/**
* 因为在代码段当中把线程B的优先级设置高于线程A,所以运行结果先执行线程B的run()方法后再执行线程A的run()方法
* 但在实际中,JAVA的优先级不准,强烈不建议用此方法来控制执行顺序和频率
*/
public class ThreadPriorityDemo {
public static void main(String args[]) {
ThreadA a = new ThreadA();
ThreadB b = new ThreadB();
b.setPriority(10);
a.setPriority(1); //设置优先级别,数值越大优先级越高
int priA = a.getPriority(); //获得优先级的方法
int priB = b.getPriority();
System.out.println(priA);
System.out.println(priB);
b.start();
a.start();
}
}
class ThreadA extends Thread {
public void run() {
System.out.println("我是线程A");
}
}
class ThreadB extends Thread {
public void run() {
System.out.println("我是线程B");
}
}
运行结果:
1 10 我是线程B 我是线程A
设置优先级也可以用线程常量
a. MAX_PRIORITY为最高优先级10
b. MIN_PRIORITY为最低优先级1
c. NORM_PRIORITY是默认优先级5
实例:
package com.bijian.study;
public class ThreadPriConstantDemo {
public static void main(String args[]) {
Thread a = new Thread();
int temp = Thread.MAX_PRIORITY;
a.setPriority(temp); //将线程优先级设置为最高
System.out.println(a.getPriority());
temp = Thread.MIN_PRIORITY;
a.setPriority(temp); //将线程优先级设置为最低
System.out.println(a.getPriority());
temp = Thread.NORM_PRIORITY;
a.setPriority(temp); //将线程优先级设置为默认
System.out.println(a.getPriority());
}
}
运行结果:
10 1 5