私はバットファイルを呼び出すJavaコードを持っています。このbatファイルには、txtファイルからテーブル(Oracle内)にデータをロードするsqlldrへの呼び出しが含まれています。これは、bat ファイルを呼び出すための Java コードです。
ProcessBuilder pb = new ProcessBuilder(new File(".").getAbsolutePath()
+ File.separator + "ld.bat");
System.out.println("Before start");
Process start;
try {
start = pb.start();
} catch (IOException e) {
e.printStackTrace();
}
このコードの下で、新しいスレッドを作成し、他のタスクを実行しています。データのロードはバックグラウンドで行われます。ロードが完了したら、何らかのタスク (たとえば、txt データ ファイルを別の場所に移動する) を実行したいと考えています。sqlldr によってデータのロードが完了したら、通知を受け取る方法はありますか。回避策に出くわしました-dテーブルの行数をチェックし続け、生のtxtファイルの行数と比較できます。しかし、これに対する別の解決策があるかどうか知りたいです。start.waitFor()
また、他の活動が保留になるため、使用したくありません。