在 Java 中"等待"流



可能重复:
是否可以在超时的情况下读取Java InputStream?

我在读一条源头可能悬着的溪流。如何"等待"BufferedReader.readLine()返回字符串最长一段时间(比如五秒(,并在没有读取任何内容的情况下继续程序?

BufferedReader有ready((方法,该方法检查输入流是否有可读取的内容。您可以将其与计时器类或其他类结合使用。

需要注意的是,这是一个IO阻塞调用。因此,中断当前执行此语句的线程将完全没有效果。

要做到这一点,一种干净的方法是使用ExecutitorService执行此调用,方法是将其封装在可调用的实现中。通过对返回的future调用get(timeout(方法,您既可以手动控制超时,也可以优雅地处理中断。

如果这个线程被中断,您将希望关闭底层资源,这样调用本身就会实际返回,并且不会泄漏线程。类似myInputStream.close((.

相关内容

  • 没有找到相关文章

最新更新