从正在运行的线程传递值

时间:2015-03-06 11:15:43

标签: java multithreading parameter-passing string-parsing

我将首先简要介绍一下: 我正在建立一个监测化学反应堆温度的系统作为学校项目。我们使用arduino进行测量,该数据将数据作为字符串发送到pc。在PC上我们有一个Java代码来读出该字符串,解析它,并在gui中显示它。

我们面临的问题如下: 我们有一个

  • 读取输入字符串并将其打印到控制台的类
  • 采用正确格式的虚拟字符串,解析它并在GUI中显示它的类

问题在于我们正在寻找一种方法将数据从阅读器传递到解析器而不会中断循环,并使其线程安全,因此我们不会丢失数据。有没有一种有效的方法呢?

1 个答案:

答案 0 :(得分:0)

您需要将功能分成不同的类,并通过Queue安排进行对象间通信。

将您的代码重构为:

  • 读取输入字符串并将其发布到队列中的类。
  • 读取输入字符串队列并将每个字符串发布到控制台队列和GUI队列的类。
  • 使用控制台队列的类,将所有内容写入控制台。
  • 使用GUI队列的类,解析字符串并更新gui。

还有其他架构(例如使用侦听器发布/订阅),但这应该适合您。