gpt4 book ai didi

java - 守护线程阻止 JVM 终止 - 可能的原因?

转载 作者:行者123 更新时间:2023-12-01 13:18:49 26 4
gpt4 key购买 nike

我需要开发一个 Maven 插件,它可以启动 apache ftp 服务器,将其作为守护进程运行(不会停止构建过程)并将其停止作为另一个目标。不幸的是,我第一次尝试使用守护线程失败了:

public class FtpServerDaemon
{
public static void main(final String[] args) throws Exception
{
Thread thread = new Thread(new Runnable()
{
@Override public void run()
{
org.apache.ftpserver.main.Daemon.main(args);
}
});

thread.setDaemon(true);
thread.start();
Thread.sleep(10000);
}
}

这里的坏处是 JVM 不会在 10 秒后终止,而是无限期地运行。如果 Daemon.main 是黑盒代码(但源代码是 available ),什么可以阻止 JVM 在守护线程中终止?

最佳答案

同意 assylias 和 chrylis 的评论。

您可以尝试其他代码,而不是org.apache.ftpserver.main.Daemon.main(args);吗?持续时间超过主线程 hibernate 时间的循环应该执行的操作,每 n 秒打印一个数字或其他内容。

我相信它必须正确终止。只是为了测试 ftpserver 是否阻止退出。

顺便说一句,如果 Daemon 线程生成子线程,子线程会自动设置为 Daemon,对吧?那么为什么会发生这种情况呢?

关于java - 守护线程阻止 JVM 终止 - 可能的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22223139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com