JAVA深化篇_30—— 線程使用之線程的優(yōu)先級(jí)【附有詳細(xì)說明及代碼】
線程的優(yōu)先級(jí)
什么是線程的優(yōu)先級(jí)
每一個(gè)線程都是有優(yōu)先級(jí)的,我們可以為每個(gè)線程定義線程的優(yōu)先級(jí),但是這并不能保證高優(yōu)先級(jí)的線程會(huì)在低優(yōu)先級(jí)的線程前執(zhí)行。線程的優(yōu)先級(jí)用數(shù)字表示,范圍從1到10,一個(gè)線程的缺省優(yōu)先級(jí)是5。
Java 的線程優(yōu)先級(jí)調(diào)度會(huì)委托給操作系統(tǒng)去處理,所以與具體的操作系統(tǒng)優(yōu)先級(jí)有關(guān),如非特別需要,一般無需設(shè)置線程優(yōu)先級(jí)。
注意
線程的優(yōu)先級(jí),不是說哪個(gè)線程優(yōu)先執(zhí)行,如果設(shè)置某個(gè)線程的優(yōu)先級(jí)高。那就是有可能被執(zhí)行的概率高。并不是優(yōu)先執(zhí)行。
線程優(yōu)先級(jí)的使用
使用下列方法獲得或設(shè)置線程對(duì)象的優(yōu)先級(jí)。
- int getPriority();
- void setPriority(int newPriority);
**注意:**優(yōu)先級(jí)低只是意味著獲得調(diào)度的概率低。并不是絕對(duì)先調(diào)用優(yōu)先級(jí)高的線程后調(diào)用優(yōu)先級(jí)低的線程。
class Priority implements Runnable{
private int num = 0;
private boolean flag = true;
@Override
public void run() {
while(this.flag){
System.out.println(Thread.currentThread().getName()+" "+num++);
}
}
public void stop(){
this.flag = false;
}
}
public class PriorityThread {
public static void main(String[] args)throws Exception {
Priority p1 = new Priority();
Priority p2 = new Priority();
Thread t1 = new Thread(p1,"線程1");
Thread t2 = new Thread(p2,"線程2");
System.out.println(t1.getPriority());
//Thread.MAX_PRIORITY = 10
t1.setPriority(Thread.MAX_PRIORITY);
//Thread.MAX_PRIORITY = 1
t2.setPriority(Thread.MIN_PRIORITY);
t1.start();
t2.start();
Thread.sleep(1000);
p1.stop();
p2.stop();
}
}
浙公網(wǎng)安備 33010602011771號(hào)