处理流数据,更新GUI,使用线程,而不是错过节拍?

时间:2013-02-19 07:26:07

标签: java multithreading bluetooth streaming

这个问题是半理论,半正式编码。

我正在考虑用Java创建一个接受流数据的应用程序,随着数据的进入,更新GUI。

所以,我正在考虑做的只是产生Java中的线程:

  1. 收集X毫秒的数据,
  2. 获取新数据并使用它更新GUI
  3. 同时,启动一个新线程,收集X毫秒的数据
  4. 这个新主题必须从第一个主题开始的地方开始
  5. 而且,与此同时,程序的所有其他部分也都在自己的线程中继续。

    所以我需要确保线程不会发生冲突,混合中没有数据丢失,我需要了解速度限制。假设数据是以1 Gbs对1 Mbs进行的,那会产生什么样的编程差异呢?

    特定应用程序包括来自蓝牙的数据以及通过HTTPS rest API从互联网传入的数据

    如果有人有例子,无论是在网上还是在这里快速而又肮脏的东西,这都很棒。我的谷歌搜索干了......

1 个答案:

答案 0 :(得分:0)

问题相当广泛,但从架构的角度来看,我认为如果将其更改为从设备读取的一个线程并将数据放入缓冲区并从该缓冲区读取一个线程并更新,则复杂性会大大降低用户界面。这减少了需要同时处理多个线程访问它的代码(理想情况下它将它减少到你使用的缓冲区)并使同步更容易。它还将数据的提取与显示分离。

编写缓冲区可以从使用PipedInputStream和PipedOutputStream开始,但是在我的一个项目中,如果你真的想要提供实时处理和显示,那么结果就不够快,所以你最终可能会写自己低延迟缓冲类。