Java 中守護執行緒與使用者執行緒的區別
眾所周知,Java 是一種支援多執行緒的語言,根據執行緒的特性,Java 中的執行緒分為兩種型別:守護執行緒和使用者執行緒。
以下是守護執行緒和使用者執行緒之間的一些重要區別:
| 序號 | 關鍵點 | 守護執行緒 | 使用者執行緒 |
|---|---|---|---|
| 1 | 性質 | 守護執行緒優先順序較低,即 JVM 不太關心這類執行緒。 | 使用者執行緒被認為是高優先順序執行緒,即 JVM 將等待任何活動的使用者執行緒完成。 |
| 2 | CPU可用性 | 由於優先順序較低,不能保證守護執行緒總是在需要時獲得 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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP