守护线程:顾名思义,就是守护线程的线程;在JAVA线程分为 用户线程(User Thread)和守护线程(Daemon Thread) ;守护线程就是用来守护用户线程的。所以JVM中如果没有需要守护的线程了,守护线程也就没有存在的意义;守护线程最典型的应用就是 GC (垃圾回收器)。守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程
一、设置守护线程
由此可见JAVA中创建线程默认是User Thread ;
setDaemon()方法必须在调用线程的start()方法之前调用
二、守护线程的特点
1、守护线程,在所有的的非守护线程(即用户线程)结束之后,程序就会结束,JVM退出,同时也就会杀死所有的守护线程。所以也就意味着,守护线程不适合去访问固有资源,比如文件,数据库。因为随时可能中断;守护线程会随着主程序的结束而结束,但是用户线程不会,或者说只要有一个用户线程未退出,进程就不会终止。
2、默认情况下,程序员创建的线程是用户线程;用setDaemon(true)可以设置线程为后台线程;而用isDaemon( )可以判断一个线程是前台线程还是后台线程;main 线程是一个用户线程;jvm的垃圾回收器其实就是一个守护线程;