Alt*_*y_H 0 java parallel-processing readline blocking
我目前正在使用以下代码来运行进程并从我自己的程序中打印其输出.我的问题是我想做的不仅仅是打印输出.但是,由于正在执行的进程几乎不会将输出打印到控制台,因此几乎从不执行注释行,因为readLine()方法是阻塞的.
Process p = Runtime.getRuntime().exec(executablePath);
ProcessWatcher pw = new ProcessWatcher(p);
BufferedReader output = new BufferedReader(new InputStreamReader(p.getInputStream()));
while(!pw.isFinished()) {
String line = output.readLine();
if(line != null) {
System.out.println(line);
}
// I want to do something in parallel here
}
Run Code Online (Sandbox Code Playgroud)
如果我可以给readLine()调用某种超时,或者如果我可以在自己的Thread中运行它,我的问题就会解决.后者是首选,但前者是可以接受的.我的主要目的是保持代码简单.
是否有一种很好的,简单的方法来并行化阻塞调用,或者我是否需要创建一个为此实现Runnable的新类?
你可以用你的代码包装.
new Thread(new Runnable() { public void run() {
///put your code here
}}).start();
Run Code Online (Sandbox Code Playgroud)
您不能执行非阻塞readLine或具有超时的readLine.在任何情况下,编写代码来处理非阻塞连接通常要复杂10倍.;)
归档时间: |
|
查看次数: |
457 次 |
最近记录: |