如何让两个线程从一个 inputStream 读取数据?

How can I get two threads to read from one inputStream?

我收到的输入流正在定期接收数据。我的一个线程(我们称它为 threadA)从流中读取每条消息并确保数据正常,否则将通过错误。我的另一个线程(我们称它为 threadB)需要读取一些特定的消息,然后对其进行处理。截至目前,threadA 只是将重要消息存储在全局变量中,而 threadB 从全局变量中读取消息。

有没有什么办法可以让两个线程从同一个源读取数据来避免这种情况?

编辑:传入的数据是对 threadB 发出的命令的响应。我的问题是 threadB 需要某些命令的回复,这些命令没有以特定的模式发出,但它不需要所有回复。

您可能可以创建线程安全输入流或包装器,如果流支持 mark/reset,您还可以让两个流并行读取数据。但是,您必须处理一个线程读取速度比另一个线程快的情况,从而导致 mark/reset 不可用或不得不跳过数据 - 涉及的内容太多,我怀疑您是否愿意为这一切操心。

我建议您保留基本设置,但尽量去掉全局变量,例如通过使用观察者模式,将对共享存储的引用传递给线程等