【发布时间】:2011-04-25 06:38:43
【问题描述】:
我的目标是创建(或使用现有的)一个 InputStream 实现(例如 MergeInputStream),它将尝试从多个 InputStream 中读取并返回第一个结果。之后,它将释放锁定并停止从所有 InputStreams 读取,直到下一次 mergeInputStream.read() 调用。我很惊讶我没有找到任何这样的工具。问题是:所有源 InputStreams 都不是很有限(不是文件,例如,而是 System.in、socket 等),所以我不能使用 SequenceInputReader。我知道这可能需要一些多线程机制,但我完全不知道该怎么做。我尝试谷歌搜索但没有结果。
【问题讨论】:
-
您将遇到的问题是没有标准方法可以知道读取应该在哪里结束。即,您不能保证获得与写入相同的读取大小(0(这是一种常见的误解)因此,您必须非常小心,以免您的数据变成一团糟。
标签: java multithreading merge inputstream