gpt4 book ai didi

java - 在 Java 中并行化阻塞调用

转载 作者:行者123 更新时间:2023-12-01 16:38:34 25 4
gpt4 key购买 nike

我目前正在使用下面的代码来运行一个进程并从我自己的程序中打印其输出。我的问题是我想做的不仅仅是打印输出。但是,由于正在执行的 Process 几乎不会将输出打印到控制台,因此注释行几乎永远不会执行,因为 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
}

如果我可以给 readLine() 调用某种超时,或者如果我可以在它自己的线程中运行它,我的问题就会得到解决。后者是首选,但前者也是可以接受的。我的主要目的是保持代码简单。

是否有一种很好、简单的方法来并行化阻塞调用,或者我是否需要为此创建一个实现 Runnable 的新类?

最佳答案

您可以使用以下内容包装代码。

new Thread(new Runnable() { public void run() {
///put your code here
}}).start();

您无法执行非阻塞 readLine 或超时操作。无论如何,编写处理非阻塞连接的代码通常要复杂 10 倍。 ;)

关于java - 在 Java 中并行化阻塞调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6652363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com