線程的優先級

在操作系統中,線程可以劃分優先級,優先級高的線程得到的CPU資源較多,也就是CPU優先執行優先級較高的線程對象中的任務。
設置線程優先級有助於幫助“線程規劃器”確定在下一次選擇哪一個線程來優先執行。
設置線程優先級使用setPriority()方法,此方法在JDK的源碼如下:

public final void setPriority(int newPriority) {
        ThreadGroup g;
        checkAccess();
        if (newPriority > MAX_PRIORITY || newPriority < MIN_PRIORITY) {
            throw new IllegalArgumentException();
        }
        if((g = getThreadGroup()) != null) {
            if (newPriority > g.getMaxPriority()) {
                newPriority = g.getMaxPriority();
            }
            setPriority0(priority = newPriority);
        }
    }

在Java中,線程的優先級分爲1~10這10個等級,如果小於1或大於10,則JDK拋出異常throw new IllegalArgumentException()。
JDK中使用3個常量來預置定義優先級的值,代碼如下:

public final static int MIN_PRIORITY=1;
public final static int NORM_PRIORITY=5;
public final static int MAX_PRIORITY=10;

線程優先級具有三個特性:

  1. 繼承性:在Java中,線程的優先級具有繼承性,比如A線程啓動B線程,則B線程的優先級與A是一樣的。
  2. 規則性:CPU儘量將執行資源讓給優先級比較高的線程。
  3. 隨機性:優先級較高的線程不一定每一次都先執行完。

總結:線程具有優先級,可以通過setPriority()方法設置線程的優先級,優先級具有繼承性,即線程的優先級總是和啓動該線程的線程的優先級保持一致;優先級具有規則性,即CPU儘量將執行資源讓給優先級比較高的線程;優先級具有隨機性,即優先級較高的線程不一定每一次都先執行完。

發佈了28 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章