如何从一个输入流读取两个线程



我在输入流中有定期接收数据。我的一个线程(我们称之为线程)读取流中的每个消息,并确保数据还可以,但否则会通过错误。我的另一个线程(我们称其为threadB)需要读取一些特定消息,然后对其进行处理。到目前为止,我已经有ThreadA只是将重要消息存储在全局变量中,而ThreadB读取了全局变量的消息。

有什么方法可以允许两个线程从同一源读取以避免这种情况?

编辑:输入的数据是对发出命令线程的响应。我的问题是,螺纹需要从某些命令中发出的答复,这些命令不以特定的方式发出,但不需要所有答复。

您可能可以创建一个ThreadSafe InputStream或包装器,如果流支持Mark/Reset,您也可以并行两个流读取数据。但是,您必须处理一个线程读取速度比另一个线程更快的情况,从而使标记/重置无法使用或不得不跳过数据 - 涉及到很多,我怀疑您是否想为所有这一切打扰。

我建议您保留基本的设置,但请尝试摆脱全球变量,例如通过使用折叠式模式,将共享存储的引用传递到线程等。

最新更新