您当前的位置:首页 > 计算机 > 编程开发 > Java

Java 守护线程

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

简单理解:当一个进程中只剩下守护线程时(即没有其他的非守护线程了),则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!")
    })
}

执行结果如下:

daemonThread:1
userThread:1
userThread:2
daemonThread:2
userThread:3
userThread:4
daemonThread:3
userThread:5
JVM exit!

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

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