【发布时间】:2018-03-20 04:02:04
【问题描述】:
我有一个类不断生成数据并将其写入自己线程上的 ByteArrayOutputStream。我有一个第二个线程获取对此 ByteArrayOutputStream 的引用。我希望第二个线程读取 ByteArrayOutputStream 的任何数据(并清空),然后在它没有得到任何字节并休眠时停止。睡眠后,我希望它尝试获取更多数据并再次清空。
我在网上看到的例子都说使用 PipedOutputStream。如果我的第一个线程是让 ByteArrayOutputStream 从一个单独的可重用库提供给外部世界,我不知道如何将 inputStream 连接到它。
如何设置 PipedInputStream 以将其连接到 ByteArrayOutputStream 以从上面读取?另外,当从 ByteArrayOutputStream 读取最后一个块时,我会看到 bytesRead == -1,表示 outputStream 何时从第一个线程关闭?
非常感谢, 迈克
【问题讨论】:
标签: java multithreading inputstream bytearrayoutputstream