多线程--守护线程与非守护线程
1.什么是守护线程,什么是非守护线程
什么是守护线程,和main相关,用户线程,用户自己创建的线程,如果主线程停止掉,不会影响用户线程
用户线程也叫非守护线程
gc线程 (线程不定时回收垃圾)属于守护线程
当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程
2.守护线程特征:
有一个特征,和主线程一起销毁
3.非守护线程特征:
和主线程互不影响
Java中有两种线程,一种是用户线程,另一种是守护线程。
用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止
守护线程当进程不存在或主线程停止,守护线程也会被停止。
thread.setDaemon(true); //设置为守护线程
代码如下 :
另外有几点需要注意:
1、setDaemon(true)必须在调用线程的start()方法之前设置,否则会抛出IllegalThreadStateException异常。
2、在守护线程中产生的新线程也是守护线程。
3、 不要认为所有的应用都可以分配给守护线程来进行服务,比如读写操作或者计算逻辑。
除 JVM 内部的守护线程外,用户可以通过以下方法设置守护线程:
public final void setDaemon(boolean on)
可以通过以下方法查询线程是否为守护线程:
public final boolean isDaemon()