Contents
20.2. 线程优先级¶
线程的调度程序根据线程决定每次线程应当何时运行,Java提供了10种优先级,分别用1~10整数表 示, 最高优先级是10用常量MAX_PRIORITY表示; 最低优先级是1用常量MIN_PRIORITY; 默认优先级是5用常量NORM_PRIORITY表示。
Thread类提供了setPriority(intnewPriority)方法可以设置线程优先级,通过getPriority()方法获得线程优先级。
Runner.java
package com.a51work.cn;
/**
* 使用Runnable接口创建多线程
*/
//Thread类提供了setPriority(int newPriority)方法可以设置线程优先级,通过getPriority()方法获得线程优先级。
public class Runner implements Runnable {
// 方法覆盖
@Override
public void run() {
for (int i = 0; i < 10; i++) {
//打印次数和线程的名字
System.out.printf("第%d次执行 - %s\n", i, Thread.currentThread().getName());
}
try {
//随机生成休眠时间
long sleepTime = (long) (1000 * Math.random());
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
//线程执行结束
System.out.println("执行完成!" + Thread.currentThread().getName());
}
public static void main(String[] args) {
// 创建线程t1,参数是一个线程执行对象Runner
Thread t1 = new Thread(new Runner());
//t1优先级最高
t1.setPriority(Thread.MAX_PRIORITY);
//开始线程t1
t1.start();
// 创建线程t2,参数是一个线程执行对象Runner
Thread t2 = new Thread(new Runner(),"hujianli-Thread");
//t2的优先级最低
t2.setPriority(Thread.MIN_PRIORITY);
//开始线程t1
t2.start();
}
}
/*
第0次执行 - Thread-0
第1次执行 - Thread-0
第2次执行 - Thread-0
第3次执行 - Thread-0
第4次执行 - Thread-0
第5次执行 - Thread-0
第6次执行 - Thread-0
第7次执行 - Thread-0
第8次执行 - Thread-0
第9次执行 - Thread-0
第0次执行 - hujianli-Thread
第1次执行 - hujianli-Thread
第2次执行 - hujianli-Thread
第3次执行 - hujianli-Thread
第4次执行 - hujianli-Thread
第5次执行 - hujianli-Thread
第6次执行 - hujianli-Thread
第7次执行 - hujianli-Thread
第8次执行 - hujianli-Thread
第9次执行 - hujianli-Thread
执行完成!hujianli-Thread
执行完成!Thread-0
* */