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.