執行緒被稱為“最小處理單元”,是一個輕量級子進程,分配了一些需要執行的工作。線程共享分配給它們的相同記憶體槽並且彼此獨立,從而促進多任務處理。但是當多個執行緒在共享記憶體槽上運行時,必然會發生資源競爭。為了避免這種競爭從而實現高吞吐量,引入了線程優先權的概念。當多個任務在同一系統上運行時,它具有很大的意義。 「執行緒調度程序負責根據優先權分配執行緒的工作」。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
JVM(JAVA 虛擬機器)預設或由程式設計師明確決定執行緒的優先權。優先權範圍在1到10之間,當我們想要給執行緒最高優先權時分配10。上下文切換變更有助於根據優先順序從執行緒 1 轉換到執行緒 2,依此類推。
注意: 有可能兩個或多個執行緒被指派相同的優先權,那麼它們的執行取決於作業系統。例如,Windows 使用循環演算法來處理這種情況。JAVA中以宏的形式預先保存了三個主要變量,解釋如下-
與取得和設定優先順序相關的一些功能是:
以下是java執行緒優先權的範例:
以下是一些範例,使用上面已定義的變數和 JAVA 中可用的現成函數來示範執行緒優先權概念。
代碼:
public class test extends Thread{ public void run (){ System.out.println ( "The name of thread running curremtly is :"+Thread.currentThread ().getName ()); System.out.println ( "The priority od thread running currently is:"+Thread.currentThread ().getPriority ()); } public static void main (String args[]){ test t1=new test (); test t2=new test (); test t3=new test (); t1.setPriority (Thread.MIN_PRIORITY); t2.setPriority (Thread.MAX_PRIORITY); t3.setPriority (Thread.NORM_PRIORITY); t1.start (); t2.start (); t3.start (); } }
輸出:
以下是使用者自訂優先定義和列印的範例。
代碼:
public class test2 extends Thread { public void run () { System.out.println ( " The control is under run function now..."); } public static void main (String args[]) { // Here we are creating threads using the constructors. test2 t1=new test2 (); test2 t2=new test2 (); // setpriority () function is used below along with the parameter to set the prioirity. t1.setPriority (2); t2.setPriority (9); // Here we are coding on how to display output strings. System.out.println ( " The priority assigned to thread t1 is: " + t1.getPriority ()); System.out.println ( "The priority assigned to thread t2 is: " + t2.getPriority ()); // the run () function is defined above will be called via start () function and print the strinf which is there in it. t1.start (); } }
輸出:
注意: 優先權應嚴格落在 1 到 10 的範圍內。如果優先權超出此範圍,則編譯器會拋出以下錯誤。當使用 setPriority () 函數設定線程 t2 的優先權時,當 13 被賦予優先權而不是 9 時,我收到此錯誤。例外:
線程“main”中的異常 java.lang.IllegalArgumentException
位於 java.base/java.lang.Thread.setPriority (Thread.java:1141)
在 test2.main (test2.java:14)
多執行緒和為執行緒分配優先權有許多優點,如下所示:
這是在同一系統中操作多個任務的廣泛使用且有效的方法之一。由於線程共享內存,這種方式也是節省內存的。我們可以讓多個執行緒在系統中運行,但這可能會混淆處理器首先選擇哪個執行緒。透過為線程分配優先權解決了這個問題。該執行緒將繼續運行,直到完成或被更高優先權的執行緒中斷。此功能與作業系統密切配合。準備Word文檔,邊聽音樂邊上網,效率並不高,直到多線程這個神奇概念的出現。
以上是Java執行緒優先權的詳細內容。更多資訊請關注PHP中文網其他相關文章!