如何从一个inputStream中读取两个线程?

时间:2016-06-23 12:56:45

标签: java multithreading inputstream

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

有没有办法允许两个线程从同一个源读取以避免这种情况?

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

1 个答案:

答案 0 :(得分:2)

您可能可以创建线程安全输入流或包装器,如果流支持标记/重置,您还可以有两个流并行读取数据。但是,您必须处理一个线程读取速度比另一个线程快,从而使标记/重置无法使用或不得不跳过数据的情况 - 涉及的内容非常多,我怀疑您是否想要打扰这一切。

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