何为Daemon线程?
Daemon----精灵,天使?
解释这个问题之前先说清楚
Java的线程分为两类----用户线程/Daemon线程
用户线程:
用户线程可以简单地理解为用户自定义的线程,包括main线程
main线程其实不是一个daemon线程
举例:main线程中创建一个用户线程,然后print日志,我们发现main结束了,线程仍然在运行,所以说明了main不是一个守护进程
Daemon线程(守护线程):
Daemon线程是为我们创建的用户线程提供服务的线程,比如说JVM的垃圾回收线程等等,这样的线程有一个非常明显的特征:当用户线程运行结束的时候,daemon线程就会自动退出。
特点:
A、守护线程创建的时候需要先调用setDaemon()进行设置,然后再启动线程。
B、由于Daemon线程的终止条件是当前是否存在用户线程,所以我们不能指派Daemon线程来进行一些业务操作,而只能服务用户线程
C、Daemon线程创建的子线程任然是Daemon线程
基于其特点,我们可以知道,这样的线程并不是用户线程不可或缺的部分,只是用于提供服务的“服务线程”。所以,虚拟机中的用户线程全部退出运行时,守护线程失去了服务的对象,JVM也就退出了。
记住一句话:线程中只剩下守护线程时,JVM就会退出。如果有任意一个线程存在,JVM就不会退出。
import java.