Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 與框架

Java 類引用

Java 有用資源

Java - 執行緒優先順序



Java 中的執行緒優先順序

每個 Java 執行緒都有一個優先順序,它可以幫助作業系統確定執行緒排程的順序。您可以獲取和設定執行緒的優先順序。Thread 類提供用於處理執行緒優先順序的方法和常量。

優先順序較高的執行緒對程式更重要,應在優先順序較低的執行緒之前分配處理器時間。但是,執行緒優先順序不能保證執行緒執行的順序,並且在很大程度上取決於平臺。

Thread 類的內建屬性常量

Java 執行緒優先順序範圍在 MIN_PRIORITY(常量 1)和 MAX_PRIORITY(常量 10)之間。預設情況下,每個執行緒都賦予 NORM_PRIORITY(常量 5)優先順序。

  • MIN_PRIORITY:指定執行緒可以具有的最低優先順序。

  • NORM_PRIORITY:指定分配給執行緒的預設優先順序。

  • MAX_PRIORITY:指定執行緒可以具有的最高優先順序。

執行緒優先順序設定器和獲取器方法

Java 中執行緒優先順序的示例

在這個例子中,我們展示了一個簡單的單執行緒程式,我們沒有宣告任何執行緒,並在程式執行中檢查執行緒名稱和優先順序。

package com.tutorialspoint;
public class TestThread {
   public void printName() {
      System.out.println("Thread Name: " + Thread.currentThread().getName());
      System.out.println("Thread Priority: " +Thread.currentThread().getPriority());
   }	
   public static void main(String args[]) {
      TestThread thread = new TestThread();
      thread.printName();	   
   }
}

輸出

Thread Name: main
Thread Priority: 5

更多執行緒優先順序的示例

示例 1

在這個例子中,我們建立了一個 ThreadDemo 類,它擴充套件了 Thread 類。我們建立了三個執行緒。每個執行緒都被分配了一個優先順序。在run() 方法中,我們列印優先順序,在輸出中,它反映線上程執行中。

package com.tutorialspoint;
class ThreadDemo extends Thread {
   ThreadDemo( ) {
   }
   public void run() {
      System.out.println("Thread Name: " + Thread.currentThread().getName() 
         + ", Thread Priority: " +Thread.currentThread().getPriority());
      for(int i = 4; i > 0; i--) {
         System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i); 
      }
      try {
         Thread.sleep(50);
      } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
   public void start () {
      super.start();
   }
}
public class TestThread {
   public static void main(String args[]) {
      ThreadDemo thread1 = new ThreadDemo();
      ThreadDemo thread2 = new ThreadDemo();
      ThreadDemo thread3 = new ThreadDemo();
      thread1.setPriority(Thread.MAX_PRIORITY);
      thread2.setPriority(Thread.MIN_PRIORITY);
      thread3.setPriority(Thread.NORM_PRIORITY);
      thread1.start();	  
      thread2.start();
      thread3.start();
   }
}

輸出

Thread Name: Thread-2, Thread Priority: 5
Thread Name: Thread-1, Thread Priority: 1
Thread Name: Thread-0, Thread Priority: 10
Thread: Thread-1, 4
Thread: Thread-2, 4
Thread: Thread-1, 3
Thread: Thread-0, 4
Thread: Thread-1, 2
Thread: Thread-2, 3
Thread: Thread-0, 3
Thread: Thread-0, 2
Thread: Thread-0, 1
Thread: Thread-2, 2
Thread: Thread-2, 1
Thread: Thread-1, 1

示例 2

在這個例子中,我們建立了一個 ThreadDemo 類,它擴充套件了 Thread 類。我們建立了三個執行緒。由於我們沒有設定任何優先順序,因此每個執行緒都具有普通優先順序。在 run() 方法中,我們列印優先順序,在輸出中,執行緒以任意順序執行。

package com.tutorialspoint;
class ThreadDemo extends Thread {
   ThreadDemo( ) {
   }
   public void run() {
      System.out.println("Thread Name: " + Thread.currentThread().getName() 
         + ", Thread Priority: " +Thread.currentThread().getPriority());
      for(int i = 4; i > 0; i--) {
         System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i); 
      }
      try {
         Thread.sleep(50);
      } catch (InterruptedException e) {
         
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }
   public void start () {
      super.start();
   }
}
public class TestThread {
   public static void main(String args[]) {
      ThreadDemo thread1 = new ThreadDemo();
      ThreadDemo thread2 = new ThreadDemo();
      ThreadDemo thread3 = new ThreadDemo();
      thread1.start();	  
      thread2.start();
      thread3.start();
   }
}

輸出

Thread Name: Thread-1, Thread Priority: 5
Thread Name: Thread-2, Thread Priority: 5
Thread Name: Thread-0, Thread Priority: 5
Thread: Thread-2, 4
Thread: Thread-1, 4
Thread: Thread-1, 3
Thread: Thread-2, 3
Thread: Thread-0, 4
Thread: Thread-2, 2
Thread: Thread-1, 2
Thread: Thread-2, 1
Thread: Thread-0, 3
Thread: Thread-1, 1
Thread: Thread-0, 2
Thread: Thread-0, 1
廣告