java中线程分为两种,一种是用户线程,一种是守护线程。
守护线程是一种特殊的线程,它的特性有“陪伴”的含义,当进程中不存在非守护线程了,守护线程就会自动销毁。典型的守护线程就是垃圾回收线程(GC),当进程中没有非守护线程了,则垃圾回收线程也就没有存在的必要了,自动销毁,只要当前JVM实例中存在任何一个非守护线程没有结束,守护线程就在工作,只有当最后一个非守护线程结束时,守护线程才会随着JVM一同结束工作。
一个例子:
public class DaemonTest extends Thread { private int i =0; @Override public void run(){ try { while (true){ i++; System.out.println("i="+(i)); Thread.sleep(1000);//每循环一次停一秒 } }catch (Exception e){ e.printStackTrace(); } } public static void main(String args[]){ try { DaemonTest thread = new DaemonTest(); thread.setDaemon(true);//设置为守护线程 thread.start();//开启守护线程 Thread.sleep(5000);//五秒后主线程结束 System.out.println("主线程结束"); }catch (Exception e){ e.printStackTrace(); } } }