2013-08-28 47 views
0

我們知道如果我們執行getcurrentthread.priority方法,我們將得到線程優先級爲5.我無法得到答案線程的優先級高於Main方法。主要方法第5優先級,它是java中主要方法具有更高優先級的線程

+4

請編輯您的問題與更多你想要的。目前還不清楚 – Reddy

+0

其實他很清楚他問了什麼。你只需要閱讀兩遍:) – Joetjah

+0

在附註中,我無法想象這是一個合理的用例。可能你正在走錯方向。 – JimmyB

回答

1

我假設你的意思是這是某個優先級隊列中線程的索引,因此至少有4個其他線程必須存在。
那麼,情況並非如此,它的不是索引,而是值用於比較其優先級與其他併發線程的優先級,不僅在您的VM中,而且在您的系統上。實際上,線程可以具有相同的優先級。

旁註:上設置線程的優先級時,總是用常量MIN_PRIORITYNORM_PRIORITYMAX_PRIORITY。如果你需要的中間值,使用常量calcuate他們:

int mediumHighPriority = (Thread.NORM_PRIORITY+Thread.MAX_PRIORITY)/2; 

恆定值可能會在未來得到改變(可能有更爲廣泛,甚至被顛倒,從而降低數等於更高的優先級,或NORM_PRIORITY可能會變得更低或更高),如果你使用常量而不是它們的值,那麼你在保存方面,代碼變得更清晰。

+0

謝謝彼得。你能詳細說明一下嗎?至少有4個其他線程必須存在。 –

0

當Java應用程序啓動時,JVM將創建主線程組作爲系統線程組的成員,並將優先級設置爲默認值(即NORM_PRIORITY)。

這隻適用於當前Java程序中的線程,但不會提供有關在OS中的其他進程中運行的所有其他線程的任何信息。