Java Runtime.exec()异步输出

wma*_*but 6 java ajax struts asynchronous runtime.exec

我想从长时间运行的shell命令获取输出,因为它可用而不是等待命令完成.我的代码在一个新线程中运行

Process proc = Runtime.getRuntime().exec("/opt/bin/longRunning");
InputStream in = proc.getInputStream();
int c;
while((c = in.read()) != -1) {
    MyStaticClass.stringBuilder.append(c);
}
Run Code Online (Sandbox Code Playgroud)

这个问题是我的/ opt/bin/longRunning中的程序必须在分配和读取InputStream之前完成.是否有任何好方法异步执行此操作?我的目标是ajax请求每隔一秒左右返回当前值MyStaticClass.stringBuilder.toString().

我坚持使用Java 5,fyi.

谢谢!w ^

Lor*_*ias 7

尝试使用Apache Common Exec.它具有异步执行进程然后将输出"泵"到线程的能力.查看Javadoc以获取更多信息