Java JVM等待线程多长时间
大家好,各位JAVA开发人员, 我有一个关于JVM的简单问题,我想知道JVM将等待线程多长时间? 例如,请查看以下代码:Java JVM等待线程多长时间,java,jvm,Java,Jvm,大家好,各位JAVA开发人员, 我有一个关于JVM的简单问题,我想知道JVM将等待线程多长时间? 例如,请查看以下代码: public static void main(String[] args) { p = Runtime.getRuntime().exec("myShellCommand -p1 v1 -p2 v2"); p.waitFor(); System.out.println("End ....:)"); } 假设“myshell命令”永远运行,那么会发生什么?JVM还一直
public static void main(String[] args) {
p = Runtime.getRuntime().exec("myShellCommand -p1 v1 -p2 v2");
p.waitFor();
System.out.println("End ....:)");
}
假设“myshell命令”永远运行,那么会发生什么?JVM还一直在等待吗?如果需要,waitFor方法会导致当前线程等待,直到该进程对象表示的进程终止。如果子流程已终止,则此方法立即返回。如果子进程尚未终止,则调用线程将被阻止,直到子进程退出(从)
根据文档,我认为它将永远运行。在您的情况下,JVM将继续等待启动的进程终止 但是,您可以启动另一个“进程监视器”线程,该线程可以等待/休眠一段合理的时间,然后中断主线程
public static void main(String[] args)
{
Thread subProcessThread = new Thread(new Runnable()
{
@Override
public void run()
{
Process p;
try
{
p = Runtime.getRuntime().exec("myShellCommand -p1 v1 -p2 v2");
p.waitFor();
System.out.println("End ....:)");
}
catch (IOException e)
{
e.printStackTrace();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
});
subProcessThread.start();
long waitTimeInMillis = 10 * 60 * 1000;
subProcessThread.join(waitTimeInMillis);
}
是的,我想是的。它应该永远运行。