我想在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();
}
}
}
答案 0 :(得分:0)
我建议您使用
p1.waitFor();
在启动另一个线程之前将此线程与子进程同步,尤其是当它们有一个共同的资源(D:\logfile.log
)时。