【发布时间】:2009-08-05 21:04:14
【问题描述】:
首先让我说,我在线程方面的经验非常低。
我有一个应用程序可以通过Runtime.exec 方法启动其他几个Java jar。问题是启动的 jars 需要同时运行,但为了获得启动 jars 的错误流,您基本上必须有一个循环“坐下来听”,直到过程完成。
这就是我现在拥有的:
_processes.add( Runtime.getRuntime().exec( commandList.toArray( new String[ commandList.size() ] ) ) );
Thread thread = new Thread( new Runnable() {
private final int _processNumber = _processes.size() - 1;
public void run() {
String streamData = _processNumber + " : ";
streamData += "StdError [\r";
BufferedReader bufferedReader =
new BufferedReader( new InputStreamReader( _processes.get( _processNumber ).getErrorStream() ) );
String line = null;
try {
while ( ( line = bufferedReader.readLine() ) != null ) {
streamData += line + "\r";
}
bufferedReader.close();
streamData += "]\r";
LOG.error( streamData );
}
catch ( Exception exception ) {
LOG.fatal( exception.getMessage() );
exception.printStackTrace();
}
}
} );
thread.start();
谁能解释如何让“错误流侦听器线程”正常工作?
TIA
【问题讨论】:
标签: java multithreading