首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么守护进程线程在非守护进程线程完成后执行?

为什么守护进程线程在非守护进程线程完成后执行?
EN

Stack Overflow用户
提问于 2018-05-26 13:18:04
回答 1查看 169关注 0票数 2

我编写了一个程序,在其中运行一个守护进程线程和一个非守护进程线程。根据理论,一旦非守护进程线程执行完成,JVM就会终止守护进程线程的执行。但是当我运行我的程序时,即使在非守护进程线程完成之后,守护进程线程仍在执行。为什么?

我写的程序是

代码语言:javascript
运行
复制
class DaemonDemo implements Runnable {

    Thread th;

    DaemonDemo() {
        th = new Thread(this);

        th.setDaemon(true);
        th.start();
    }

    public void run() {
        System.out.println("Run: " + th.isDaemon());

        for (int i = 1; i <= 10; i++) {
            System.out.println("Run: " + i);
        }
    }
}

public class Test_DaemonDemo {

    public static void main(String[] args) {

        DaemonDemo dd = new DaemonDemo();

        System.out.println("Main Countdown Starts");

        for (int i = 1; i <= 10; i++) {
            System.out.println("main: " + i);
        }
    }
}

输出是

代码语言:javascript
运行
复制
Main Countdown Starts
Run: true
main: 1
Run: 1
main: 2
Run: 2
main: 3
Run: 3
main: 4
Run: 4
main: 5
Run: 5
main: 6
Run: 6
main: 7
Run: 7
main: 8
main: 9
main: 10
Run: 8
Run: 9
Run: 10

我不明白为什么守护进程线程在完成非守护进程线程之后仍在运行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-23 15:42:55

这只是主线程终止和守护进程线程突然终止之间的延迟问题。

将守护进程的线程循环计数增加到100。

不会走得太远。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50543191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档