如何从Java中的BufferedReader读取而不阻塞?

问题描述 投票:3回答:4

我想向服务器发送命令,并确定是否收到响应。

现在,我正在使用BufferedReaderreadline()函数,该函数将阻塞直到服务器发出响应,但我要做的只是首先验证服务器是否响应。

我尝试使用ready()reset()来避免此阻止,但这没有帮助。

这导致我的程序在等待服务器响应时陷入困境,这永远不会发生。根据我对事物的理解,InputStreamReader似乎也做同样的事情。

我在此处找到的关于该主题的其他问题没有回答我的问题,因此,如果您能回答我的问题,那就太好了。

java stream blocking bufferedreader inputstreamreader
4个回答
1
投票

也许您只需要InputStream而无需将其包装在BufferedReader


3
投票

如果要异步读取响应,我建议启动一个读取BufferedReader的线程。这更容易编码,更易于控制。


0
投票

最近我使用CountDownLatch做了类似的事情。可能有一些更好的方法,但这很简单,并且似乎工作得很好。您可以调整CountDownLatch的等待时间以适合您的需求。


0
投票

如果您使用标准的Java IO,这是一项棘手的任务,不会被阻塞。常见的答案是迁移到NIO或Netty。净值是更可取的选择。但是有时候您别无选择,所以我建议您尝试一下我的解决方法:

© www.soinside.com 2019 - 2024. All rights reserved.