Java學習筆記74. Java線程的優先級

不同的線程就像是不同的工作小分隊,而系統的計算資源就像是工作場所,工作場所一次只能讓一個線程來工作,與此同時,其它的線程就需要等待。但是不同的小分隊的重要程度不同,就應該分別看待,這就是優先級的設定。Java用setPriority方法來給線程設置優先級, 數字1~10分別代碼10個不同的優先級,1的優先級最小,10的優先級最高,如果不設定優先級,則默認的優先級爲5。Java還用3個常量分別代表高中低的優先級, 分別是:MAX_PRIORITY, NORM_PRIORITY, MIN_PRIORITY.

下面這個例子展示瞭如果使用setPriority()方法:

class demothread1 extends Thread{        //線程類demothread1
    public void run(){    //run方法,輸出a到h的字符
        for(char i='a';i<'h';i++){
            System.out.print(i);
        }
    }
}
class demothread2 extends Thread{    //線程類demothread2

    public void run(){    //線程類,輸出1到9的數字
        for(int i=1;i<9;i++){
            System.out.print(i);
        }
    }
}
public class demosetPriority{
    public static void main(String[] args){
        demothread1 d1 = new demothread1();
        demothread2 d2 = new demothread2();
        d1.setPriority(1);    //設定線程類實例d1的優先級
        d2.setPriority(10);   //設定線程類實例d2的優先級
        d1.start();        //啓動d1
        d2.start();        //啓動d2
        System.out.println();    //主線程main中的換行語句
    }
}

編譯執行之,結果如下:

可見,在設定了優先級之後,優先級高的線程有更高的概率得到優先執行,但是結果也不是一定的。先執行低優先級的線程的時候也有。可見,優先級只是決定執行順序的一個因素,應該是一個重要因素,但是不絕對。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章