简介

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)
Daemon的作用是为其他线程的运行提供服务,比如说GC线程。
User Thread线程和Daemon Thread守护线程本质上来说去没啥区别的,唯一的区别之处就在虚拟机的离开:如果User Thread全部执行结束,Daemon Thread就会终止,虚拟机也会结束运行。

通过 Thread.setDaemon(true) 设置为守护线程,不设置则默认为用户线程。

注意事项

  1. 值得注意的是 Thread.setDaemon(true) 必须在 Thread.start() 之前调用,否则将抛出IllegalThreadStateException
  2. 不应该在守护线程中做 读写操作计算逻辑 等操作,因为守护线程随时可能因为用户线程的终止而结束