多线程--守护线程与非守护线程

多线程–守护线程与非守护线程

1.什么是守护线程,什么是非守护线程

什么是守护线程,和main相关,用户线程,用户自己创建的线程,如果主线程停止掉,不会影响用户线程

用户线程也叫非守护线程

gc线程 (线程不定时回收垃圾)属于守护线程

当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XUg5lPDg-1587784231713)(C:\Users\闫晓龙\AppData\Roaming\Typora\typora-user-images\image-20200425110023694.png)]

2.守护线程特征:

有一个特征,和主线程一起销毁

3.非守护线程特征:

和主线程互不影响

Java中有两种线程,一种是用户线程,另一种是守护线程。

用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止

守护线程当进程不存在或主线程停止,守护线程也会被停止。

thread.setDaemon(true);  //设置为守护线程
代码如下 :

在这里插入图片描述

另外有几点需要注意:

1、setDaemon(true)必须在调用线程的start()方法之前设置,否则会抛出IllegalThreadStateException异常。

2、在守护线程中产生的新线程也是守护线程。
3、 不要认为所有的应用都可以分配给守护线程来进行服务,比如读写操作或者计算逻辑。

除 JVM 内部的守护线程外,用户可以通过以下方法设置守护线程:

public final void setDaemon(boolean on)

可以通过以下方法查询线程是否为守护线程:

public final boolean isDaemon()
发布了18 篇原创文章 · 获赞 19 · 访问量 1026

猜你喜欢

转载自blog.csdn.net/qq_41977838/article/details/105746625