Java 프로그램에서 일괄 처리를 실행하기 위해 공통 exe 비동기 방식을 사용하려고합니다. 배치 프로세스.Java common-exe : 일괄 처리를 별도의 스레드에서 실행하여 일괄 출력을 병렬로 읽습니다.
나는이 코드 조각이 비동기
DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
CommandLine cmdLine = new CommandLine("some batch file");
Executor executor = new DefaultExecutor();
executor.execute(cmdLine, resultHandler);
하지만 지금은 내 문제가 병렬로 실행에 배치 파일의 출력 스트림을 읽는 방법 인 프로세스를 실행 것을 배웠습니다. 출력 스트림에서 일부 정보를 처리해야합니다. 여기
내가 노력하고있는 코드의 내 작품이다 .. 나는 .. 내 문제를 해결하는 방법을 알아낼 수 없습니다입니다String command = "some batch file.bat";
PipedOutputStream pipedOutputStream = new PipedOutputStream();
PumpStreamHandler pumpStreamHandler = new PumpStreamHandler(pipedOutputStream);
CommandLine commandLine = null;
DefaultExecutor defaultExecutor = new DefaultExecutor();
DataInputStream dataInputStream = null;
DefaultExecuteResultHandler executeResultHandler = new DefaultExecuteResultHandler();
commandLine.parse(command);
try {
dataInputStream = new DataInputStream(new PipedInputStream(pipedOutputStream));
defaultExecutor.setStreamHandler(pumpStreamHandler);
defaultExecutor.execute(commandLine, executeResultHandler);
InputStream outCmdStream = null;
pumpStreamHandler.setProcessOutputStream(outCmdStream);
InputStreamReader outCmdReader = new InputStreamReader(outCmdStream);
BufferedReader outCmdBufReader = new BufferedReader(outCmdReader);
String procOutputStr;
while ((procOutputStr = dataInputStream.readLine()) != null) {
System.out.println(procOutputStr);
}
} catch (IOException e) {
e.printStackTrace();
System.out.println("ERROR.RUNNING.CMD");
e.printStackTrace();
System.out.println("ERROR.RUNNING.CMD");
}