“等待”Java中的流[重复]

Posted

技术标签:

【中文标题】“等待”Java中的流[重复]【英文标题】:"Waiting" for a stream in Java [duplicate] 【发布时间】:2011-12-13 21:07:56 【问题描述】:

可能重复:Is it possible to read from a Java InputStream with a timeout?

我正在读取来源可能挂起的流。我如何“等待”BufferedReader.readLine() 返回一个字符串最多一定时间(比如五秒),如果没有读取任何内容,则继续程序?

【问题讨论】:

您可以在这里查看:***.com/questions/804951/… 谢谢,这应该可以解决我的问题。 【参考方案1】:

BufferedReader 具有 ready() 方法,该方法检查输入流是否已准备好读取。您可以将它与计时器类或其他东西结合使用。

【讨论】:

【参考方案2】:

请务必注意,这是一个 IO 阻塞调用。因此,中断当前执行该语句的线程绝对没有任何效果。

执行此操作的一种简洁方法是使用 ExecutorService 执行此调用,方法是将其包装在 Callable 实现中。通过在返回的 future 上调用 get(timeout) 方法,您既可以手动控制超时,也可以优雅地处理中断。

如果此线程被中断,您将需要关闭底层资源,以便调用本身真正返回并且您不会泄漏线程。类似于 myInputStream.close()。

【讨论】:

以上是关于“等待”Java中的流[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Spring专题「Web请求读取系列」如何构建一个可重复读取的Request的流机制

如何中断java的等待输入[重复]

#yyds干货盘点#☕并发技术系列「Web请求读取系列」如何构建一个可重复读取的Request的流机制

如何从String创建InputStream? [重复]

JAVA按下按钮并等待几秒钟[重复]

提供有关java中等待和睡眠的详细信息[重复]