![](/img/trans.png)
[英]Java Wait for thread(in another class) to finish before executing code in activity
[英]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.