線程優先級 - 1

“讓我們繼續我們的課程。什麼是線程優先級以及為什麼需要它們?

“在現實世界的問題中,不同線程正在執行的工作的重要性可能有很大差異。線程優先級的概念是為了控制這個過程而創建的。每個線程都有一個優先級,由 1 到 10 之間的數字表示。”

“10是最高優先級。”

“1是最低的。”

“如果沒有給出優先級,則線程獲得優先級 5(正常)。”

線程的優先級不會顯著影響它的工作,而是更多的建議。如果有多個休眠線程需要運行,Java機器會先啟動一個優先級高的線程。

“Java 機器按照它認為合適的方式管理線程。低優先級的線程不會閒置。它們只會收到比其他線程更少的執行時間,但它們仍會被執行。”

“在大多數情況下,線程總是以相同的優先級執行。試圖給一個線程比其他線程更多的線程通常表明程序中存在架構問題。”

“哇哦。而且我已經夢想為我的線程分配最高優先級,這樣它們就能做 10 倍的事情。”

“事實證明,這裡的情況已接近尾聲:具有高優先級的線程可以而且將會工作得更多,但也許不會——無法保證。”

“說吧,我如何改變線程的優先級?”

“非常簡單。Thread 類有兩個方法:”

方法 描述
void setPriority(int newPriority)
設置新的優先級
int getPriority()
返回當前線程優先級

“Thread 類也有三個常量:”

公共最終靜態 int MIN_PRIORITY = 1;

public final static int NORM_PRIORITY = 5;

public final static int MAX_PRIORITY = 10;

“讓我猜猜。MIN_PRIORITY 是最低優先級,MAX_PRIORITY 是最高優先級,NORM_PRIORITY 是默認優先級?”

“是的,完全正確。你可以編寫分配最高線程優先級的代碼。”

“這裡有什麼詭計嗎?像這樣的東西?”

Thread thread = new MyThread();
thread.setPriority(Thread. MAX_PRIORITY)
thread.start();

“沒錯。沒什麼複雜的,對吧?”

“是的。你能在線程啟動後設置/更改優先級嗎?還是像 setDaemon,你必須在線程啟動之前設置值?”

“線程啟動後可以更改優先級。正如我已經說過的,這不會導致任何顯著變化。”

“好吧,這是一個小而有趣的話題。謝謝,艾莉。”