【发布时间】:2016-06-23 12:56:44
【问题描述】:
我有一个定期接收数据的输入流。我的一个线程(我们称之为 threadA)从流中读取每条消息并确保数据正常,否则会出现错误。我的另一个线程(我们称之为 threadB)需要读取一些特定的消息,然后对其进行处理。到目前为止,我让 threadA 将重要消息存储在全局变量中,而 threadB 从全局变量中读取消息。
有没有办法让两个线程从同一个源读取以避免这种情况?
edit:传入的数据是对线程B发出的命令的响应。我的问题是 threadB 需要某些命令的回复,这些命令没有特定的模式发出,但它不需要所有的回复。
【问题讨论】:
-
听起来不需要两个线程。第一个仅仅是一个过滤器。在一个线程中进行过滤和处理。或者,让第一个线程将数据过滤到由第二个线程读取的第二个流中。
-
问题是threadB只需要一些回复。因此,如果我让它阅读每条回复,那么有时它会坐在那里浪费时间等待它甚至不需要的回复。
-
@alex 然后只在需要时等待回复。
-
抱歉我的无知,但我对 Java 有点陌生。要阅读,我有一台扫描仪,然后执行
if(in.hasNextLine()){doSomething(in.nextLine());}。如果我在需要回复时运行此代码,它不会为我提供我尚未阅读的最旧消息吗?因此,如果我发送一条不需要回复的消息,那么就发送一条需要回复的消息。我不会先阅读第一条消息的回复吗?如果这没有意义,请告诉我。
标签: java multithreading inputstream