Java 中守護執行緒與使用者執行緒的區別


眾所周知,Java 是一種支援多執行緒的語言,根據執行緒的特性,Java 中的執行緒分為兩種型別:守護執行緒和使用者執行緒。

以下是守護執行緒和使用者執行緒之間的一些重要區別:

序號關鍵點守護執行緒使用者執行緒
1性質守護執行緒優先順序較低,即 JVM 不太關心這類執行緒。使用者執行緒被認為是高優先順序執行緒,即 JVM 將等待任何活動的使用者執行緒完成。
2CPU可用性由於優先順序較低,不能保證守護執行緒總是在需要時獲得 CPU 使用權。由於優先順序較高,使用者執行緒總是優先獲得 CPU 使用權。
3建立守護執行緒在後臺執行,通常稱為後臺執行緒。而使用者執行緒通常由應用程式建立,用於併發執行某些任務。
4執行環境守護執行緒在後臺執行,通常稱為後臺執行緒。使用者執行緒被稱為前臺執行緒。
5生命週期守護執行緒沒有設定的生命週期,它們完全依賴於使用者執行緒。使用者執行緒與任何其他普通執行緒一樣具有特定的生命週期,其生命週期獨立於任何其他執行緒。

守護執行緒與使用者執行緒的示例

線上演示

JavaTester.java

class JavaTester extends Thread {
   @Override
   public void run(){
      System.out.println("User Thread or Non-Daemon Thread");
   }
}
public class MainThread {
   public static void main(String[] args){
      JavaTester mt = new JavaTester();
      mt.start();
      System.out.println("Main Thread");
      System.out.println("Is " + mt.getName() + " a Daemon Thread: "+ mt.isDaemon());
      System.out.println("Is " + Thread.currentThread().getName() + " a Daemon Thread: " +  Thread.currentThread().isDaemon());
   }
}

輸出

Main Thread
Is Thread-0 a Daemon Thread: false
Is main a Daemon Thread: false
User Thread or Non-Daemon Thread

更新於:2019年9月18日

瀏覽量 1K+

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.