2025年5月18日 星期日 乙巳(蛇)年 二月廿 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Java

Java 守护线程

时间:02-05来源:作者:点击数:73

简单理解:当一个进程中只剩下守护线程时(即没有其他的非守护线程了),则JVM就会结束,也就是说守护线程也会跟着结束了,即使守护线程中的代码还没执行完,示例代码如下:

  • fun main() {
  • val daemonThread = thread(isDaemon = true) {
  • (1..5).forEach {
  • println("daemonThread:$it")
  • Thread.sleep(6000)
  • }
  • }
  • val userThread = thread {
  • (1..5).forEach {
  • println("userThread:$it")
  • Thread.sleep(3000)
  • }
  • }
  • Runtime.getRuntime().addShutdownHook(thread(false) {
  • println("JVM exit!")
  • })
  • }

执行结果如下:

  • daemonThread1
  • userThread1
  • userThread2
  • daemonThread2
  • userThread3
  • userThread4
  • daemonThread3
  • userThread5
  • JVM exit!

代码中,我们开了一个守护线程,一个用户线程,当然还有一个main线程,main线程瞬间就执行结束了,剩下两个子线程,用户线程呢每3秒打印一条信息,而守护线程呢每6秒打印一条,所以我们看一看到,守护线程打印一条消息后,用户线程就会打印两条,当用户线程执行完5次打印后,用户线程就结束了,但是守护线程的5次循环还没结束呢,但是没办法,谁让他是守护线程啊,现在只剩下守护线程了,所以JVM就会结束掉了,也就是进程就结束了,那守护线程肯定跟着结束了。这就是我理解的守护线程,不知道是不是这样理解的,希望大神指点!

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门