ProcessBuilder
との違いを説明してくださいFileHandler
。どの状況でどちらを使用する必要がありますか。
たとえば、コマンドの出力を「logfile.txt」などのテキスト ファイルにリダイレクトする場合ProcessBuilder
、ファイルに出力を取得するのに数秒かかります。
FileHandler
100 個のプロセスが出力を同じ「logfile.txt 」に送信する必要があるような状況で、これは何ができるでしょうか?
のメソッドを使用せずに、100 レコードすべての出力を同じ「logfile.txt 」に取得する方法はありますか? これは私のコードですが、100 レコードが同時にスケジュールされている場合、p.waitfor() メソッドは役に立ちません。コマンドを実行してすべてのプロセスのログファイルに出力を取得するのに数秒かかり、100 プロセスの場合はさらに時間がかかるためです。 DB 内のすべてのレコードに対して同じコマンドを実行する時間。しかし、私のアプリケーションは毎分開始されます。それが問題です。 process.waitFor() は正確な出力を得るのに役立ちますが、レコードの数が多いほど時間がかかります。待つべきではないが、すべての出力を同期的にファイルに追加する必要がある別の方法が必要です。process.waitFor()
ProcessBuilder
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();
p1.waitFor();
}
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();
p1.waitFor();
}
}
}