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 退出时,线程能够自动关闭,此时,守护线程是你的首选。

  • 在 Java 中垃圾回收线程就是特殊的守护线程。

  • 其他的线程只有一种,那就是用户线程。(应用程序里的自定义线程)

  • 应用程序里的线程,一般都是用户自定义线程。

  • 用户也可以在应用程序代码自定义守护线程,只需要调用Thread类的设置方法设置一下即可。

总结:

  • 只要任何非守护线程还在运行,程序就不会终止,守护线程会运行。

  • 当 JVM 中不存在任何一个正在运行的非守护线程时,则 JVM 进程即会退出(官方解释)如果非守护线程(即用户自定义线程)都执行完毕,程序终止,守护线程也会终止。

  • 守护线程用于又希望在程序退出时,或者说 JVM 退出时,线程能够自动关闭。

原文地址:https://www.cnblogs.com/ynzj123/p/12784210.html