2013-02-19 41 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

相關問題