Deamon Tread又称“后台线程”、“精灵线程”,相对应的,User Tread可以成为“用户线程”、“前台线程”。在整理JVM时提到JVM的垃圾回收机制实质上就是一个典型的Deamon Tread,那么Deamon Tread又是怎么样的呢?
java 线程可以分为两种:User Tread和Deamon Tread。一般通过main()运行的都是User Tread,当User Tread执行完毕后,守护线程就会自动退出。守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。也就是说守护线程不依赖于终端,但是依赖于系统,与系统“同生共死”。一旦系统中不再有前台线程,那么后台线程就会自动退出。就JVM的垃圾回收线程来说,当我们的程序中不再有任何运行中的Thread,程序就不会再产生垃圾,垃圾回收器也就无事可做,所以当垃圾回收线程是Java虚拟机上仅剩的线程时,Java虚拟机会自动离开。它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。
我们可以用isDaemon方法将测试该线程是否为守护线程。setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为Daemon模式,false为User模式。setDaemon(boolean on)方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。值得一提的是,当你在一个守护线程中产生了其他线程,那么这些新产生的线程不用设置Daemon属性,都将是守护线程,用户线程同样。