用户线程和守护线程
Java线程分为用户线程和守护线程
一般情况下不做特别说明配置,
默认都是用户线程
。
用户线程(User Thread):是系统的工作线程,它会完成这个程序需要完成的业务操作。
守护线程(Daemon Thread):是一种特殊的线程
为其它线程服务的
,在后台默默地完成一些系统性的服务,比如垃圾回收线程就是最典型的例子
守护线程作为一个服务线程,没有服务对象就没有必须继续运行了,如果用户线程全部结束了,意味着程序需要完成的业务操作已经结束了,系统可以退出了。所以假如当系统只剩下守护线程的时候,Java虚拟机会自动退出。
线程的daemon属性
true表示是守护线程
false表示是用户线程
/**
* Tests if this thread is a daemon thread.
*
* @return <code>true</code> if this thread is a daemon thread;
* <code>false</code> otherwise.
* @see #setDaemon(boolean)
*/
public final boolean isDaemon() {
return daemon;
}
如何用户线程全部结束意味着程序需要完成的业务操作已经结束了,守护线程随着JVM一同结束工作。
setDaemon(true)方法必须在start()之前设置,否则报IllegalThreadStateException异常。