在Java中有两种线程,一种是用户线程,另外一种就是守护(Daemon)线程。
什么是守护线程?它是一种特殊的线程,它的特性有陪伴的含义,当进程中不存在非守护线程了,则守护线程自动销毁,典型的守护线程就是垃圾回收线程。当进程中没有非守护线程了,则垃圾回收线程也没有存在的必要了,自动销毁。
通俗比喻一下,任何一个守护线程都是整个JVM中的所有非守护线程的保姆,只要当前JVM实例存在非守护线程并且没有结束,也即是幼儿园中有小朋友,那么保姆也就是守护线程就要工作,只要当最后一个非守护线程结束时,幼儿园中没有小朋友了,则守护线程随着JVM一起结束工作。
守护线程的作用是为其它线程运行提供便利服务,最典型的应用就是GC垃圾回收器,它就是一个很称职的守护者。
例如:
最后守护线程也退出了。