在Java程序中多次执行ProcessBuilder

时间:2014-06-15 13:20:33

标签: java processbuilder

我想在Java程序中使用ProcessBuilder,它将在同一程序中多次使用。 将为数据库中的每条记录检查此代码段。如果只有一条记录满足开始时间/结束时间等约束,那么我就没有任何问题,但如果两条记录满足任何这些约束,那么首先记录,它会执行processbuilder中的命令并将输出重定向到logfile。记录但是第二条记录,它不会执行processbuilder中的命令并将输出重定向到相同的日志文件。关于此问题的类似问题在以下链接中未得到解答。我希望至少现在任何人都会经历这个问题并给我们一个解决方案。我真的不明白我做错了什么。任何有这个概念的人都请回答这个问题,让我知道我做错了什么。

multiple processbuilder in a programme

while(rs1.next())
        {
            instance_id = rs1.getString(1);
            startdate = rs1.getString(2);
            starttime = rs1.getString(3);
            endtime = rs1.getString(4);
            enddate = rs1.getString(5);
            if(presentdate.equals(startdate) || presentdate.equals(enddate))
            {
                if(presenttime.equals(starttime))
                {
                    String[] s1 = new String[]{"cmd", "/c","ec2-start-instances",instance_id,">>","D:\\logfile.log"};
                    ProcessBuilder builder1 = new ProcessBuilder(s1);
                    Process p1 = builder1.start();
                }
                else if(presenttime.equals(endtime))
                {
                    String[] s1 = new String[]{"cmd", "/c","ec2-stop-instances",instance_id,">>","D:\\logfile.log"};
                    ProcessBuilder builder1 = new ProcessBuilder(s1);
                    Process p1 = builder1.start();
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

我建议您使用

p1.waitFor();

在启动另一个线程之前将此线程与子进程同步,尤其是当它们有一个共同的资源(D:\logfile.log)时。