参考:
https://www.cnblogs.com/qq1290511257/p/10645106.html
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且
周期性地执行某种任务或等待处理某些发生的事件。
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)
所有非守护线程结束时,守护线程会随着JVM一同结束工作
守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程。
Thread daemonTread = new Thread();
// 设定 daemonThread 为 守护线程,default false(非守护线程)
daemonThread.setDaemon(true);
// 验证当前线程是否为守护线程,返回 true 则为守护线程
daemonThread.isDaemon();
(1) 不能把正在运行的常规线程设置为守护线程。所以thread.setDaemon(true)必须在thread.start()之前设置,否则会报IllegalThreadStateException异常。
(2) 在Daemon线程中产生的新线程也是Daemon的。
(3) 不是所有的应用都可以分配给Daemon来进行服务,比如读写操作或者计算逻辑。因为无法知道在所有的User完成之前,Daemon是否已经完成了预期的服务任务。