2013-02-19 42 views
1

这个问题是半理论,半 - 如何正确编码。处理流数据,更新图形用户界面,使用线程,而不是错过一个节拍?

我想做出一个关于Java的一个应用程序,将接受的数据流,并在将数据进来,更新的GUI。

所以,我在想什么做的是刚产卵关在Java线程会的:

  1. 收集数据,X-毫秒,
  2. 采取新的数据和更新GUI与它
  3. 在同时,启动一个新的线程,为X毫秒
  4. 收集数据这一新的线程必须一开始就顺利,其中第一线程开始

而且,与此同时,该计划的所有其他部分也围绕着他们自己的线程进行。

所以我需要确保线程不会冲突,没有数据在混合丢失,我需要的速度极限的理解。说数据是以1Gbs还是1MB来进入,那么编程有什么区别呢?

的具体应用包括从蓝牙进来的数据和资料也通过HTTPS休息API来自因特网的

如果任何人有例子,在网上或东西快速和肮脏就在这里,那简直太好了。我的谷歌搜索想出了干..

+0

为1GB/s的需要专门的硬件。在继续之前,我会更好地理解您的要求。 – Mikhail 2013-02-19 07:31:48

+0

为什么你不能只有一个线程等待数据,并将数据粘贴到某种缓冲区中,然后GUI线程从缓冲区读入,并相应地进行更新。 – w4etwetewtwet 2013-02-19 08:24:35

回答

0

的问题是相当广泛的,但从一个archtetctural点,我认为复杂性大大降低,如果你把它变成一个线程从您的设备读取,并把数据放入缓冲区和一个从该缓冲区读取并更新UI的线程。这减少了需要同时处理访问它的多个线程的代码(理想情况是它将它减少到你使用的缓冲区)并且使得同步变得更容易。它也从显示数据中提取数据。

写入缓冲区可以从使用PipedInputStream和PipedOutputStream开始,但是在我的其中一个项目中,如果您真的想要提供实时处理和显示,结果变得不够快,因此您最终可能会编写自己的程序一个低延迟缓冲区类。

+0

有趣的是,我想知道是否有PipedIOStream具有相同接口的开源替代类?感谢你的回答,我会玩弄它。 – 2013-02-19 19:27:50

+0

我想知道,但我没有意识到任何并最终包装了一个'byte []'缓冲区我自己(但是,我不能让代码公开)。 – Stephan 2013-02-19 20:39:10

+0

顺便说一下,管道班似乎在做伎俩!还没有以快速的速度进行测试,但效果如此之好 – 2013-02-21 01:19:50

相关问题