首頁常見問題正文

Java多線程:線程的調(diào)度和線程的優(yōu)先級

更新時間:2022-10-11 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在之前我們講解過,程序中的多個線程是并發(fā)執(zhí)行的,某個線程若想被執(zhí)行必須要得到CPU的使用權(quán)。Java虛擬機(jī)會按照特定的機(jī)制為程序中的每個線程分配CPU的使用權(quán),這種機(jī)制稱為線程的調(diào)度。

  在計算機(jī)中,線程調(diào)度有兩種模型,分別是分時調(diào)度模型和搶占式調(diào)度模型。分時調(diào)度模型,是指讓所有的線程輪流獲得CPU的使用權(quán),并且平均分配每個線程占用CPU的時間片。搶占式調(diào)度模型,是指讓可運行池中優(yōu)先級高的線程優(yōu)先占用CPU,而對于優(yōu)先級相同的線程,隨機(jī)選擇一個線程使其占用CPU,當(dāng)它失去了CPU的使用權(quán)后,再隨機(jī)選擇其他線程獲取CPU使用權(quán)。Java虛擬機(jī)默認(rèn)采用搶占式調(diào)度模型,通常情況下程序員不需要去關(guān)心它,但在某些特定的需求下需要改變這種模式,由程序自己來控制CPU的調(diào)度。

  什么是線程的優(yōu)先級?

  在應(yīng)用程序中,如果要對線程進(jìn)行調(diào)度,最直接的方式就是設(shè)置線程的優(yōu)先級。優(yōu)先級越高的線程獲得CPU執(zhí)行的機(jī)會越大,而優(yōu)先級越低的線程獲得CPU執(zhí)行的機(jī)會越小。線程的優(yōu)先級用1~10的整數(shù)來表示,數(shù)字越大優(yōu)先級越高。除了可以直接使用數(shù)字表示線程的優(yōu)先級外,還可以使用Thread類中提供的3個靜態(tài)常量表示線程的優(yōu)先級,如下所示。

  Thread類的優(yōu)先級常量有哪些?

  1.static int MAX_PRIORITY:表示線程的最高優(yōu)先級,值為10。

  2.static int MIN_PRIORITY:表示線程的最低優(yōu)先級,值為1。

  3.static int NORM_PRIORITY:表示線程的普通優(yōu)先級,值為5。

  程序在運行期間,處于就緒狀態(tài)的每個線程都有自己的優(yōu)先級,例如,main線程具有普通優(yōu)先級。然而線程優(yōu)先級不是固定不變的,可以通過Thread類的setPriority(int newPriority)方法進(jìn)行設(shè)置,setPriority()方法中的參數(shù)newPriority接收的是1~10的整數(shù)或者Thread類的3個靜態(tài)常量。

分享到:
在線咨詢 我要報名
和我們在線交談!