繁体   English   中英

Java中的主线程在使用Runtime类创建的任何进程完成执行之前是否完成

[英]Does the main thread in java finish up before any processes it might create using Runtime class finish executing

我正在使用Runtime类来执行软件的安装。 但是,它不起作用,这意味着,在我启动作业(使用Runtime类创建)之后,一段时间(即不久)之后,安装作业将退出。 我认为问题在于主线程必须完成工作,从而杀死使用Runtime类创建的Process。 我对么 ? 那这里的解决方案是什么?

这就是我在主要班级内解雇工作的方式:

try
        {
            Runtime.getRuntime().exec(cmd);
        }                               
        catch(IOException e)    
        {   
            //add logging functionality
            e.printStackTrace();
        }

此命令后不久,主要功能完成。

运行时命令没有问题。 它可以正常工作..我什至可以看到它开始(我正在通过代码启动安装)然后突然退出。

您可能想签出java.lang.Process类。 您可能想要这样的东西:

        Process process = Runtime.getRuntime().exec(cmd);
        process.waitFor();

子进程可能正在接收SIGHUP并退出。

编辑:

在这种情况下,我会认为:

    try
    {
        Process process = Runtime.getRuntime().exec(cmd);
        process.waitFor();
    }                               
    catch(IOException e)    
    {   
        //add logging functionality
        e.printStackTrace();
    }
    catch(InterruptedException e)    
    {   
        e.printStackTrace();
    }

创建的进程是主线程的进程。 如果主线程完成,则该进程将被终止,类似于您手动执行命令并按ctrl c或关闭窗口的过程。

这只是一个疯狂的猜测,但我认为要编写退出程序是因为您的代码(逻辑)中存在错误,可能是while循环会很快退出,

尝试看一下运行时执行的代码。

该过程可能陷入僵局。 解决方案在注释中,并带有示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM