gpt4 book ai didi

java - BufferedReader readline 如何在连续程序中工作?

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

所以我知道我可以使用 readline 逐行获取程序输出,但是如果我使用 while 循环

String l;
while( (l=input.readLine()) != null)
rcv = rcv + l
return rcv;

但这会卡住我的程序,直到外部进程完成输出。我想听外部进程给出的输出。外部程序可能需要很长时间才能退出。

我尝试使用 read() 但它也会卡住我的程序直到最后。我如何读取可用的输出,然后进行处理?然后返回再次读取输出?

最佳答案

您可以使用单独的线程来读取输入流。这个想法是阻塞操作应该发生在单独的线程中,因此您的应用程序主线程不会被阻塞。

一种方法是向执行器提交一个Callable任务:

        ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> processOutput = executor.submit(() -> {
// your code to read the stream goes here
String l, rcv;
while( (l=input.readLine()) != null) { ... }
return rcv;
});

这将返回 "future"这是一种表示现在可能不可用但将来某个时候可能可用的值的方法。您可以检查该值现在是否可用,或者等待该值出现并超时等。

关于java - BufferedReader readline 如何在连续程序中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61101855/

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