一般情况下不做特别说明配置,默认都是用户线程
User Thread
是系统的工作线程,它会完成这个程序需要完成的业务操作
Daemon Thread
是一种特殊的线程,为其它线程服务的,在后台默默的完成一些系统性的服务,比如垃圾回收线程就是最典型的例子
守护线程作为一个服务线程,没有服务对象就没有必要继续运行了
如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了
所以加入当系统只剩下守护线程的时候,java虚拟机会自动退出
1 public static void main(String[] args) throws InterruptedException { 2 Thread t1 = new Thread(() -> { 3 System.out.println(Thread.currentThread().getName() + "开始运行," + (Thread.currentThread().isDaemon() ? "守护线程" : "用户线程")); 4 while (true) {} 5 }, "t1"); 6 t1.setDaemon(true); 7 t1.start(); 8 9 TimeUnit.SECONDS.sleep(3); 10 11 System.out.println("主线程结束"); 12 }