这个问题是半理论问题,半如何正确编码的问题。
我正在考虑用 Java 制作一个应用程序,该应用程序将接受流数据,并在数据进入时更新 GUI。
所以,我想做的就是在 Java 中生成线程,这将:
- 收集 X 毫秒的数据,
- 获取新数据并用其更新 GUI
- 同时启动一个新线程,收集X毫秒的数据
- 这个新线程必须从第一个线程开始的地方开始
同时,程序的所有其他部分也在它们自己的线程中进行。
因此,我需要确保线程不会发生冲突,混合中不会丢失任何数据,并且我需要了解速度限制。假设数据以 1 Gbs 与 1 Mbs 的速度传入,这会产生什么编程差异?
特定应用程序包括来自蓝牙的数据以及通过 HTTPS REST API 从互联网传入的数据
如果有人有例子,无论是在线的还是这里快速而肮脏的东西,那就太好了。我的 Google 搜索结果毫无结果..
最佳答案
这个问题相当广泛,但从架构的角度来看,我认为如果将其更改为一个线程从设备读取并将数据放入缓冲区,然后一个线程从该缓冲区读取并更新,那么复杂性会大大降低用户界面。这减少了需要处理同时访问它的多个线程的代码(理想情况下它会将其减少到您使用的缓冲区)并使同步变得更加容易。它还将数据的获取与显示分离开来。
写入缓冲区可以从使用 PipedInputStream 和 PipedOutputStream 开始,但是在我的一个项目中,如果您确实想提供实时处理和显示,结果证明它不够快,因此您最终可能会自己编写一个低延迟缓冲类。
关于java - 处理流数据、更新 GUI、使用线程,并且不错过任何一个节拍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14951988/