在说守护线程之前,我们先说一下什么是用户线程。
用户线程:我们平常创建的普通线程。
守护线程(即 daemon thread):是个服务线程,用来服务于用户线程;不需要上层逻辑介入,当然我们也可以手动创建一个守护线程。在jvm中,所有非守护线程都执行完毕后,无论有没有守护线程,虚拟机都会自动退出。
存在任意一个用户线程的时候,jvm就不会退出。那么jvm 程序在什么情况下能够正常退出?
the java virtual machine exits when the only threads running are all daemon threads.
上面这句话来自 jdk 官方文档,意思是:
当 jvm 中不存在任何一个正在运行的非守护线程时,则 借款申请单模板jvm 进程即会退出。
首先要明白,当存在任意一个用户线程的时候,jvm就不会退出。
如果这个用户线程不结束,jvm进程就无法结束。这就导致一个问题:由谁负责结束这个线程?所以java就提供了守护线程(daemon thread)来帮助我们解决这一个问题。
使用很简单,只是在调用start()方法前,调用s怎样爱护牙齿etdaemon(true)
把该线程标记为守护线程。
如何检查一个线程是守护线程还是用户线程:使用isdaemon()
方法。
通过控制台的输出,我们可以看到,当主线程退出时,jvm 会随之退出运行,守护线程同时也会被回收,即使你里面是个死循环也不碍事。
thread.tdaemon(true) 必须在 thread.start() 之前设置,否则会抛出 illegalthreadstateexception
异常。在daemon线程中产生的新线程也是daemon的。 四、守护线程的作用及应用场景
在上面,我们已经知道了,如果 jvm 中没有一个正在运行的非守护线程,这个时候,jvm 会退出。
jvm 中的垃圾回收线程就是典型的守护线程。如果说不具备该特性,jvm 要退出时,由于垃圾回收线程还在运行着,导致程序无法退出。由此可见,守护线程的重要性了。
垃圾回收是一个一直需要运行的机制,但是当没有用户线程的时候长城工程,也就不需要垃圾回收线程了,守护线程刚好美育作文素材满足这样的需求。
通常来说,守护线程经常被用来执行一些后台任务,但是呢,你又希望在程序退出时,或者说 jvm 退出时,线程能够自动关闭,此时,守护线程是你的首选。
到此这篇关于java中守护线程介绍及使用的文章就介绍到这了,更多相关java守护线程内容请搜索www.88755致辞的意思1.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 15:19:54,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/6c4dd0c751263e2ba16d5f5ae57b58d3.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Java中守护线程介绍及使用.doc
本文 PDF 下载地址:Java中守护线程介绍及使用.pdf
留言与评论(共有 0 条评论) |