有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

多线程在java中的主线程在使用运行时类finish创建的任何进程执行之前完成

我正在使用Runtime类来执行一个软件的安装。但是,它不起作用,这意味着,在我启动作业(使用Runtime类创建)之后,过了一段时间(很快),安装作业就会退出。我认为问题在于主线程必须完成,从而终止使用Runtime类创建的进程。我说得对吗?这里的解决方案是什么

这就是我在主课堂上解雇工作的方式:

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

此命令发出后不久,主功能完成

运行时命令没有问题。这很有效。。我甚至可以看到它启动(我正在通过代码启动安装),然后突然退出


共 (3) 个答案

  1. # 1 楼答案

    这只是一个猜测,但我认为编程退出是因为你的代码中有一个错误(逻辑),可能是一个很快就会退出的while循环

    尽量看好运行时执行的代码

    这个过程可能处于僵局。解决方案在评论中,带有一个示例

  2. # 2 楼答案

    你可能想看看java。处理类。你可能想要这样的东西:

            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();
        }
    
  3. # 3 楼答案

    创建的进程是主线程的子进程。如果主线程完成,进程将被终止,类似于手动执行命令并按下ctrlc或关闭窗口