gpt4 book ai didi

java - 同时使用来自外部进程的标准输出

转载 作者:行者123 更新时间:2023-12-01 19:25:55 24 4
gpt4 key购买 nike

是否有一种线程安全的方法可以使用 Java 1.6 中的 ProcessBuilder 来同时使用来自外部进程的 stdout?

背景:我需要调用 pbzip2 将大文件解压缩到 stdout,并在文件解压缩时处理每一行(pbzip2 使用多个 CPU,与其他实现不同)。

逻辑方法是创建一个子线程来循环输入流(即 stdout;您不喜欢这个命名吗?),如下所示:

while((line = reader.readLine()) != null)
{
// do stuff
}

但是,解压缩速度很慢,所以我真正需要的是 reader.readLine 方法安静地等待下一行可用,而不是退出。

有什么好的方法吗?

最佳答案

您应该能够使用 InputStreamReader 包装您的输入流和 BufferedReader 。然后,您可以调用 readLine() ,这将根据需要进行阻塞。

请注意,您应该有一个相应的 stderr 读取器。您不必对它执行任何操作,但您需要使用 stderr 流,否则您生成的进程可能会阻塞。请参阅this answer用于链接等。

关于java - 同时使用来自外部进程的标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1028065/

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