37 守护线程是什么?
Posted ynzj123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了37 守护线程是什么?相关的知识,希望对你有一定的参考价值。
守护线程是什么?
答:
概念:
-
守护线程:专门用于服务其他的线程,如果非守护线程(即用户自定义线程)都执行完毕,程序终止,那么jvm就会退出(即停止运行)——此时,连jvm都停止运行了,守护线程当然也就停止执行了。
-
反过来说,只要任何非守护线程还在运行,程序就不会终止。
-
换一种说法:如果有用户自定义线程存在的话,jvm就不会退出——此时,守护线程也不能退出,也就是它还要运行,干嘛呢,就是为了执行垃圾回收的任务。
原文链接:https://blog.csdn.net/chenyao1994/article/details/91172636 (概念)
原文链接:https://www.baidu.com/link?url=-kPFH3umtmZwszHzTY0xnV_gM-2FXNJKHfLW5h1EyZlIKE1cTBgxJ42z2biQZfY6&wd=&eqid=c5cbc82d000d4b6a000000065ea61362 (拓展和代码)
拓展:
-
守护线程拥有自动结束自己生命周期的特性,而非守护线程不具备这个特点。
-
通常来说,守护线程经常被用来执行一些后台任务,但是呢,你又希望在程序退出时,或者说 JVM 退出时,线程能够自动关闭,此时,守护线程是你的首选。
-
其他的线程只有一种,那就是用户线程。(应用程序里的自定义线程)
-
应用程序里的线程,一般都是用户自定义线程。
-
用户也可以在应用程序代码自定义守护线程,只需要调用Thread类的设置方法设置一下即可。
总结:
-
只要任何非守护线程还在运行,程序就不会终止,守护线程会运行。
-
当 JVM 中不存在任何一个正在运行的非守护线程时,则 JVM 进程即会退出(官方解释)如果非守护线程(即用户自定义线程)都执行完毕,程序终止,守护线程也会终止。
-
守护线程用于又希望在程序退出时,或者说 JVM 退出时,线程能够自动关闭。
以上是关于37 守护线程是什么?的主要内容,如果未能解决你的问题,请参考以下文章